js作用域

                js作用域

  js的作用域我们可以理解为地盘,一个代码所在的地盘,他们互相是独立存在的一片区域,作用域的作用就是隔离变量,使不同作用域下的变量不冲突

 var a =10; //全局作用域的变量a

 function fun(){
     var a =0; //局部(函数)作用域的变量a
    /**
     * 两个变量a并不会冲突,因为他们在不同的作用域下,全局变量a储存在全局执行上下文对象(即window)中,
     *      而函数变量a存储在该作用域所对应的函数执行上下文对象中.
     */
 }

全局作用域之外,每个函数的作用域,在编写代码时就已经确定了,而不是调用函数时!

 var a = 100;
    function fun1() {
      console.log(a);
    }
    function fun2(f) {
      var a = 0;
      f();
    }
    fun2(fun1);//输出是100;

作用域链: 由多个上下级关系的作用域组成的链,在我们查找一个变量或者方法时,方向是由内到外,先是在自身作用域中查找,如果没有找到该方法或者属性,则到它的上一层作用域中查找,直到全局作用域,如果还是没有找到,则抛出找不到的错误

原文地址:https://www.cnblogs.com/buwenxin/p/13173990.html