zoukankan      html  css  js  c++  java
  • JavaScript执行上下文

    概念
    • 代码执行时产生的环境(环境里有:this、变量、函数、类)。
    作用
    • 确定当前使用的xxx具体值是多少。
    分类()
    • 全局执行上下文:窗口打开时产生(将代码在浏览器打开),关闭时销毁。

    • 局部执行上下文:函数调用时产生,调用结束销毁。调用多少次就会产生少个局部执行上下文。

    • eval执行上下文(可将字符串当成JS代码解析,有一些怪异现象,暂且不讨论)

    对比(作用域)
    • EC:动态的,执行时才产生
    • 作用域:静态,根据代码的书写位置
    执行栈
    • 特点:先进后出
    • 执行过程
      • 全局执行上下文压栈。代码按顺序执行,每调用一次函数,在栈内就会分配相应的空间给它产生的局部执行上下文,叠放在原有内容上班。谁在栈顶谁就是正在执行的函数,执行完毕退栈,移交执行权并回收内存(环境销毁)。
    EC的生命周期
    • 创建阶段(做了什么)
      • 确定this的指向
      • 建立环境记录(执行时在环境记录中找需要的xxx)
      • 建立对外引用
        • 在自己的环境中没有需要使用的xxx时使用
        • 指向函数声明处所处的环境
    • 执行阶段
      • 代码按顺序执行
      • AO(Active Object:活动对象,VO激活后就成了AO)
    • 销毁阶段
    环境记录
    • VO(Variable Object:变量对象)
      • 看参数
      • 看声明式函数(记录的是整个函数)——若命名冲突,覆盖
      • 看var变量(初始化值为undefined)——若命名冲突,忽略
        • 注:let和const声明的变量也在记录环境记录中,但是不初始化,而不初始化的东西是无法使用的,所以在赋值之前访问都会报错,这段区域就叫它的暂时性死区。赋值初始化之后可以正常使用。
        • 初始化:变量声明后第一次赋值。
    作用域链
    • 通过执行上下文的对外引用,可以一直向外寻找链成一个链条,链条的起点是函数执行时产生的局部执行上下文,链条的末尾永远是全局执行上下文,这个链条就叫做:作用域链。
  • 相关阅读:
    整理一下看过的图像识别的文章(人脸、车牌、验证码)
    从大象安全套到超级表格
    HDU 3157 Crazy Circuits(有源汇上下界最小流)
    struts2学习笔记(5)---自己定义拦截器
    【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能
    ConvertHelper与泛型集合
    G711
    关于众筹的一些经验,希望能有帮助
    Java基础 Day14 泛型
    LeetCode144:Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/Lotus3904/p/12432784.html
Copyright © 2011-2022 走看看