第2章:词法作用域
作用域共有两种主要的工作模型。第一种是最为普遍的,被大多数编程语言所采用的 词法 作用域 ,我们会对这种作用域进行深入讨论。另外一种叫作 动态作用域 ,仍有一些编程语 言在使用(比如 Bash 脚本、Perl 中的一些模式等)。
一、词法阶段
这个概念是理解词法作用域及其名称来历的基础。
简单地说,词法作用域就是定义在词法阶段的作用域。换句话说,词法作用域是由你在写 代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域 不变(大部分情况下是这样的)。
function foo(a) {
var b = a * 2;
function bar(c) {
console.log( a, b, c );
}
bar( b * 3 );
}
foo( 2 ); // 2, 4, 12
在这个例子中有三个逐级嵌套的作用域。为了帮助理解,可以将它们想象成几个逐级包含 的气泡。
evernotecid://24EF8D48-9B46-4416-B9E4-9C3110C0181A/appyinxiangcom/19783202/ENResource/p767
