zoukankan      html  css  js  c++  java
  • 作用域链总结

     

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

    2、变量提升的问题。

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

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

          

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

          

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

          

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

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

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

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

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

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

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

  • 相关阅读:
    String
    Map和Set
    js的栈与堆
    js的私有属性
    随便谈一谈原型
    前端页面优化提速
    nth-child和nth-of-type
    重复输出字符串
    闭包
    mongodb内嵌文档的查询
  • 原文地址:https://www.cnblogs.com/qdcnbj/p/11186879.html
Copyright © 2011-2022 走看看