2019-01-23
回答
词法作用域指的是使用函数位置来确定变量值。于此相对的是动态作用域,他使用函数调用的位置来确定变量值。
加分回答
- 词法作用语也被成为静态作用域。
- 在闭包中,JavaScript 依旧遵循词法作用域。
- 大多数语言都使用词法范围,因为这样的源代码更加容易理解。
- JavaScript 实际上没有动态作用域,但
this
机制却和动态作用域类似:关注点都在于函数是如何被调用的。 - 下列代码中,使用词法作用域将输出
2
,动态作用域将输出3
:
function foo() {
console.log( a ); // 2
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();