词法作用域
对于使用词法作用域而言,词法作用域最重要的规则在于词法作用域的定义过程发生在代码的书写阶段。代码如下:1 | function foo() { |
foo
函数书写在全局的作用域中,因此会被输出 2
动态作用域
动态作用域关心的是函数是在哪里被调用的。上面的函数中使用动态作用域的时候 最终输出应该是3
,因为从 foo
函数被调用的地方寻在变量 a
最后找到了 var a = 3
.词法作用域关心的是函数在那里被声明, 动态作用域关心的是函数在哪里被调用。使用js 中的 this
的时候, this
的效果是类似于使用动态作用域的。