javaScript [[scope]]学习笔记

在javaScript 学习中,闭包肯定是一个让人头疼的问题,而闭包必定离不开[[scope]]作用域

scope存储了执行期上下文的集合

而了解scope以及scope链又是一个十分抽象的问题

我们先把它具体化成问题

有这样一个函数:

            function a(){
                var a = 1;
            }
            a();

在执行这段代码时

首先 a从预编译到执行期

1.a  defined a.[scope] 0 :GO

2.a  doing    a.[scope] 0 :AO

                                   1 :GO

a首先创建GO 占scope chain 的第0位

而后,function a 创建 AO 抢占 scope chain 的第0位

GO则变成了 scope chain的第1位

如图:

而在运行结束后,上下文将从第0位开始销毁

也就是AO先销毁,而后GO再销毁

[scope]作用域就是这样形成了一个集合,呈现链状结构,供运行时调用

 

博主是初学者,可能理解上会有错误,若有错误,求指正,谢谢

posted @ 2019-02-02 11:37  #Rao  阅读(170)  评论(0编辑  收藏  举报