作用域 是一种规则,这套规则用来管理引擎如何进行标识符名称进行变量的查找。
作用域分两种:词法作用域、动态作用域:
词法作用域
词法作用域,JS就是采用这种作用域。词法作用域由你在写代码时将变量和作用域块写在哪里决定。
例如:变量a在全局作用域中,输出2;
function foo() {
console.log( a ); // 2
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();
动态作用域 不是在写代码是静态确定的,而是在运行时动态确定。例如,动态作用域 会输出3
function foo() {
console.log( a ); // 2
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();