作用域链总结

 

1、只有函数有作用域,es5中函数没有块级作用域。Es6中的let增加了块级作用域。

2、变量提升的问题。

3、函数执行分为两个阶段。@1进入执行上下文阶段,形成活动对象AO,@2执行代码

4、全局上下文的变量对象初始化是全局对象

      

      函数上下文的变量对象初始化只包括 Arguments 对象

      

      在进入执行上下文时会给变量对象添加形参、函数声明、变量声明等初始的属性值

      

      在代码执行阶段,会再次修改变量对象的属性值

5、作用域链如果在A函数内声明了B函数,即A函数在执行的时候,会创建其A函数的作用域, 那么函数B在创建的时候,会引用A的作用域。

6、像这种函数作用域的嵌套就组成了所谓的函数作用域链。当在自身作用域内找不到该变量的时候,会沿着作用域链逐步向上查找,若在全局作用域内部仍找不到该变量,则会抛出异常。

7、闭包即有权访问其他函数作用域内的变量即为闭包。要这样,必须在一个函数内部创建一个函数才能实现。

8、闭包的问题:变量污染和内存泄漏。

@1即多个函数同时修改一个变量

@2即无法释放内存空间。

posted @ 2019-07-15 08:40  前端++  阅读(161)  评论(0编辑  收藏  举报