JavaScript之作用域-作用域链

作用域 ==> 作用域链
 
作用域:变量可以其作用的区域(声明定义好一个变量,变量可以在哪些范围内使用)
分类:全局作用域和局部作用域(函数作用域);在js中,目前全局有作用域以及函数可以形成作用域
注意点:函数作用域就是在函数声明定义好的时候,这个函数作用域就定下来了。
 
作用域链:任何函数形成作用域,函数嵌套在另外一个函数中,外层函数也有自己的作用域,这样从里到外,到全局作用域形成的链式结构叫做作用域链
function fn(){
            var num = 10;
            function inner() {
                
                function foo() {
                    
                }
            }
        }

函数作用域链都是从当前函数作用域出发,从里到外的形成的;

foo函数的作用域链: foo函数作用域 ==> inner函数作用域 ==> fn函数作用域 ==> 全局作用域;

inner函数的作用域链:inner函数作用域 ==> fn函数作用域 ==> 全局作用域
   var num = 888;
        function fn(){
            
            function inner() {
                function foo() {
                    console.log(num); // 10
                }
                foo()
            }
            inner()
        }
        fn();

变量的查找原则: 简单记忆:沿着作用域链进行查找;

1. 先在当前作用域中来查找是否有声明该变量,如果有,返回变量的值

2. 如果没有,去外层作用域中去查找,如果有,返回变量的值

3. 如果没有,沿着作用域链继续往外找,直到全局作用域,如果有,返回变量的值;
4. 如果还没有,报错。
posted @ 2020-09-18 16:40  大熊在这里  阅读(108)  评论(0)    收藏  举报