09 作用域链

Posted by CodingWithAlice on April 11, 2021

09 作用域链

结论:作用域链(outer指向的上一个上下文)由函数声明的位置决定。下面是帮助理解的例子:

先开看一段代码:输出的结果应该是什么? – bye,坑

原因:JavaScript 作用域链是由词法作用域决定的,词法作用域就是根据代码的位置来决定的,详见下文分析

image-20210411104738718

作用域链:JavaScript 引擎首先会在“当前的执行上下文”中查找该变量,如果在当前的变量环境中没有查找到,那么 JavaScript 引擎会继续在 outer 所指向的执行上下文中查找。

注意:在每个执行上下文的变量环境中,都包含了一个外部引用,用来指向外部的执行上下文,我们把这个外部引用称为outer

image-20210411104928271

词法作用域(outer来源)

词法作用域定义:指作用域是由代码中 函数声明的位置 来决定的。

image-20210411105118567

JavaScript 作用域链是由词法作用域决定的,词法作用域就是根据代码的位置来决定的。