--- title: JavaScript进阶(二)— 词法作用域 createTime: 2020/02/10 11:37:25 author: pengzhanbo permalink: /article/fpcpgpod/ --- ## 作用域 作用域是指 程序源代码中,定义变量的区域。 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。 ## 词法作用域 在 `JavaScript` 中,采用的是 词法作用域, 即静态作用域。 词法作用域规定了,函数的作用域是在 **函数定义的时候就确定** 了。 ### 示例 ```js var a = 1 function foo() { console.log(a) } function bar() { var a = 2 foo() } bar() ``` 这个示例的执行结果为 `1`。 在这个例子中, 由于 函数`foo` 的作用域在 定义的时候就确定了,即使在 函数`bar` 中也有相同的变量名`a`的定义, 但是由于两个函数在定义时,作用域是相互独立的,函数`foo`在其作用域查找局部变量`a`,没有找到, 继续从它书写位置往上查找上一层的代码,所以输出的结果为 `1`。