作用域 [[scope]]
,函数定义时自动生成的一个隐式属性,是用来存储函数作用域链 Scope Chain
的容器。作用域链是用来存储函数执行上下文 AO
和全局执行上下文 GO
的容器。
[[scope]]
,[[scope]]
中保存该函数的作用域链,并从该作用域链的起始位置开始存储当前环境的作用域链。
AO
,并将其插入作用域链的起始位置。
AO
也会被销毁,等待下次执行时重新生成AO
,如果函数内部嵌有其他函数,其内部函数的[[scope]]
也会被销毁。
function a() {
function b() {
var b = 2;
}
var a = 1;
b();
}
var c = 3;
a();
复制代码
[[scope]]
属性,其中存储a的作用域链,并将GO
插入到作用域链的起始位置。AO
,插入到其作用域链的起始位置。Tips:此时虽然函数a的AO中已经有了函数b的引用,但是函数b还是
未被定义
的。
[[scope]]
也在此时生成,其中存储函数b的作用域链,并将当前环境的作用域链插入函数b作用域链的起始位置,即函数a的AO
和GO
。AO
,插入到函数b作用域链的起始位置。AO
被销毁,函数b回归到被定义的状态。AO
被销毁,同时函数b的[[scope]]
也将不存在,函数a回归到被定义的状态。本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。