js 作用域链

作者: 小李不小 | 来源:发表于2019-04-06 17:58 被阅读3次

    什么是作用域链 

    其实了解了作用域快,你学习作用域链的时候,你就会接受快很多,

    当a 创建函数的时候,分为两部 

    1,先定义  ---- 会产生一个 [[scope]] 这个东东就是用来装 作用域的集合的,在scope里面生成一个go 全局的 变量环境

    2,后执行 ---- 执行的a的时候,会在函数内部  [[scope]]  创建一个 ao  这个ao就是装函数内部变量的。

    然后定义b 在执行b 

    定义b函数的时候,也会产生一个 [[scope]] 这个时候会继承 a ao 和 全局 go ,执行b函数的时候会产生 内部 [[scope]] 的 新的 b.ao 继承 a.ao  全局go

    执行c的时候,跟b的情况一样,我这里就不写了,这多是一些理念性的东西。

    function a(){ function b(){ console.log(cc); function c(){ var cc=123; } c() } b() } a(); a undefind a[[scope]] ==> go a doing a.[[scope]]==> 0 a.ao: 1 go b undefind b[[scope]] ==> 0 a.ao 1 go b doing b[[scope]] ==> 0 b.ao 1a.ao 2go c undefind c[[scope]] ==> 0 a.ao 1 b.ao 2 go c doing c[[scope]] ==> 0 c.ao 1 a.ao 2 b.ao 3 go

    相关文章

      网友评论

        本文标题:js 作用域链

        本文链接:https://www.haomeiwen.com/subject/qezriqtx.html