JS高級——做用域鏈

基本概念函數

一、只要是函數就能夠創造做用域spa

二、函數中又能夠再建立函數code

三、函數內部的做用域能夠訪問函數外部的做用域對象

四、若是有多個函數嵌套,那麼就會構成一個鏈式訪問結構,這就是做用域鏈blog

<script>
    //f1--->全局
    function f1() {
        //f2--->f1--->全局
        function f2() {
            //f3---->f2--->f1--->全局
            function f3() {
            }

            //f4--->f2--->f1---->全局
            function f4() {
            }
        }

        //f5--->f1---->全局
        function f5() {
        }
    }
</script>

變量的搜索原則ip

一、首先在所在的做用域中查找作用域

二、若是找到了 就直接使用io

三、若是沒有找到 就去上級做用域中查找function

四、若是直到0級做用域鏈也就是全局做用域尚未找到,報錯class

在new Function中,在沒有指定參數的狀況下,函數中的Function對象做用域指示的又是全局

<script>
    var x= 123;
    function f(){
        var x = 100;
        //g.[[scope]]  == window
        var g = new Function("","alert(x)");
        g();
    }
    f();//結果爲:123
</script>
相關文章
相關標籤/搜索