JavaScript 作用域链

作用域链的原理和原型链很类似,如果这个变量在自己的作用域中没有,那么它会寻找父级的,直到最顶层。

[[scope]]:

    每个javascript函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供javascript引擎存取,[[scope]]就是其中一个。[[scope]]指的就是我们所说的作用域,其中存储了运行期上下文的集合,   [[scope]]是所有父变量对象的层级链,处于当前函数上下文之上,在函数创建时存于其中.

注意这重要的一点--[[scope]]在函数创建时被存储--静态(不变的),永远永远,直至函数销毁。即:函数可以永不调用,但[[scope]]属性已经写入,并存储在函数对象中。

另外一个需要考虑的是--与作用域链对比,[[scope]]是函数的一个属性而不是上下文。

作用域链:

    [[scope]]中所存储的执行期上下文对象的集合,这个集合呈链式链接,我们把这种链式链接叫做作用域链。


好文链接:深入理解JavaScript系列(14):作用域链(Scope Chain)

猜你喜欢

转载自blog.csdn.net/qq_37746973/article/details/81015346
今日推荐