作用域和作用域链

作用域

作用域,顾名思义就是变量 和方法起作用的区域
在js中作用域分两种,一种是全局作用域(window),一种是局部作用域(function)ES6之后还有块级作用域

    var global = "hello!"//全局变量
    function foo(){
          var  local = "world"//局部变量
    }

作用域链

当我们在局部作用域中,访问一个变量时,系统首先会在当前作用域中寻找变量var的声明语句,如找到则直接使用。反之,则继续向上一级作用域中寻找var的声明语句,如找到则直接使用,反之,继续向上一级作用域中去寻找…直到全局作用域,如找到则直接使用,如未找到则直接在全局作用域中声明该变量,我们把这种链式查询关系就称之为为作用域链!

  • 试题
 var i = 10;
 function fn1(){
     var i = 20;
     function fn2(){
        i = 30;
        function fn3(){
            console.log(i)
        }
        fn3();
     }
        console.log(i)//20
        fn2()
    
 }
 fn1();//30
 console.log(i)//10

你可能感兴趣的:(作用域和作用域链)