Open newPromise opened 6 years ago
代码如下:
var a = 2; function bar () { console.log(a); } function foo () { var a = 3; bar();//2 function baz () { console.log(a);// 3 } } foo();
对于变量的查找是从当前的作用域开始,一级一级向上查找的
注意: 无论函数在哪里被调用,无论函数如何调用,函数的词法作用域仅在函数被声明所处的位置决定
在上面的代码中,函数 bar 是在全局变量中被声明的,虽然在函数 foo 中被调用,但是对于 a 的查找是从全局变量开始查找的。
bar
foo
a
在函数 baz 中,函数 baz 在 函数 foo 中被声明,在 foo 内部查找到 a 因此 a == 3,如果在 函数 中没有找到变量 a 那么, 会沿着作用域链一层一层的向上查找
baz
a == 3
代码如下:
对于变量的查找是从当前的作用域开始,一级一级向上查找的
注意: 无论函数在哪里被调用,无论函数如何调用,函数的词法作用域仅在函数被声明所处的位置决定
在上面的代码中,函数
bar
是在全局变量中被声明的,虽然在函数foo
中被调用,但是对于a
的查找是从全局变量开始查找的。在函数
baz
中,函数baz
在 函数foo
中被声明,在foo
内部查找到a
因此a == 3
,如果在 函数 中没有找到变量a
那么, 会沿着作用域链一层一层的向上查找