做用域链经典问题

<script>
        function fn1(){
            var i="a";
            function fn2(){
                i="b";
                function fn3(){
                    i="c";
                }
                fn3();
            }
            fn2();
            console.log(i);
          }   
        fn1();
        
    </script>

结果:cspa

解析以下:牢记做用做用域链四条原则code

一、 当对一个变量产生引用时,要遵循做用域链原则。尝试引用一个变量,先在当前做用域寻找该变量的声明语句(var 变量名)。有,直接使用该变量。blog

二、 若是没有,继续向上一级做用域寻找var声明语句。有,直接使用ip

三、 若是仍是没有,继续向上一级做用域寻找var声明语句。有,直接使用作用域

四、周而复始,直到查询到全局做用域,依然没有var声明语句,系统会隐式(自动)地建立该变量的声明语句io

相关文章
相关标签/搜索