词法作用域的理解

 JavaScript 采用的是词法作用域(静态作用域),函数的作用域在函数定义的时候就决定了。

举个例子:

var value = 1;

function foo() {
    console.log(value);
}

function bar() {
    var value = 2;
    foo();
}

bar();

执行 foo 函数,先从 foo 函数内部查找是否有局部变量 value,

如果没有,就根据书写的位置,查找上面一层的代码,也就是 value 等于 1,所以结果会打印 1。

思考:

var a = 10;
var o = {
     a:11,
     b:{
         fn:function(){
              console.log(a);
         }
     }
}
o.b.fn();

执行o.b.fn,先从 fn 函数内部查找是否有局部变量a,

如果没有,就根据书写的位置,查找o上面一层的代码,也就是 a 等于 1,所以结果会打印 10。

猜你喜欢

转载自www.cnblogs.com/ssszjh/p/12919363.html
今日推荐