前言:
每一个函数都是一个对象,对象有一些属性仅供javascript引擎存取,[[scope]] 就为其中一个隐形属性,我们称为作用域,存储了函数执行期上下文的集合,
总结:
- 执行期上下文:函数执行时,会创建一个被称为执行期上下文的内部对象(AO),每次执行都为一个独一的AO,执行完毕AO销毁
- 作用域:[[scope]],存储了函数执行期上下文的集合
- 作用域链:[[scope]]中存储的执行期上下文对象的集合,这个集合呈链式链接,我们把这个称为作用域链
- 查找变量:从作用域链的顶端依次向下寻找
分析下面代码的作用域链
function a() {
function b() {
var b = 234;
}
var a = 123;
b();
}
var glob = 100;
a();
1.首先一个全局作用域

a 定义时,a.[[scope]]——> 0:GO{}

a执行时,a.[[scope]]——> 0:aAO{}
1:GO{}

b 定义时,b.[[scope]]——> 0:aAO{}
1:GO{}

b执行时,b.[[scope]]——> 0:bAO{}
1:aAO{}
2:GO{}

JS作用域与执行上下文
深入解析JavaScript中函数执行期上下文的概念,包括[[scope]]属性,作用域链的形成及变量查找机制,通过具体代码示例展示作用域链的工作原理。

被折叠的 条评论
为什么被折叠?



