畫做用域鏈的原則

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script type="text/javascript">
        // 繪製如下代碼的做用域鏈:
        var num = 123;
        var f = function() {};
        var arr = [];


        // 繪製做用域的規則:
        // 1 繪製做用域鏈的時候,只繪製在當前做用域中聲明的變量或者函數
        // 2 把全局做用域看做是0級別鏈,只繪製在全局中聲明的函數和變量
        // 3 若是是在全局做用域中存在一個函數,此時,在這個函數上
        //         引出一條新的鏈,此時把這條鏈叫作: 1級別鏈
        // 4 若是,在函數內部 又聲明鏈一個函數,而後,這個函數由引出一條新的
        //         鏈出來,把這條鏈稱做:2級別鏈
        // 5 以此類推,只到n級別的鏈

        // 變量搜索原則:
        // 從高級別的鏈 到 低級別的鏈,來查找
        // 1 首先是在當前鏈(n)中查找有沒有聲明的這個變量,若是由直接使用
        // 2 沒有,就去 n-1 級別的鏈中查找有沒有,若是由直接使用
        // 3 以此類推,知道 0 級別的鏈,若是有直接使用,若是沒有
        //         若是是賦值,此時會建立全局變量
        //         若是是讀取,此時會報錯!!
        // console.log(asdfa);
    </script>
</body>
</html>
相關文章
相關標籤/搜索