博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 总结之执行环境
阅读量:5792 次
发布时间:2019-06-18

本文共 768 字,大约阅读时间需要 2 分钟。

图片描述

? 运行环境

JavaScript 中,有三种代码运行环境:

  1. Global 环境
  2. Function 环境
  3. Eval 环境

为了表示不同的运行环境,JavaScript 中有一个执行环境的概念。

? 执行环境

执行环境都有三个重要的属性:

  • 变量对象
  • 作用域链
  • this

这三个属性跟代码运行的行为有很重要的关系,在之前的文章中都有详细分析。具体可以查看、和。

当一段 JavaScript 代码执行的时候,JavaScript 解释器会创建执行环境,其实这里会有两个阶段:

  1. 创建阶段(当函数被调用,但是开始执行函数内部代码之前)
  • 创建 Scope chain
  • 创建 VO / AO(variables, functions and arguments)
  • 设置 this 的值
  1. 激活/代码执行阶段
  • 设置变量的值、函数的引用,然后解释/执行代码

整个执行过程可以参考中举的例子。

? 执行环境栈

当 JavaScript 代码执行的时候,会进入不同的执行环境,这些执行环境会构成一个执行环境栈。在开始解析代码的时候,会将全局执行环境 globalContext 压入执行环境栈中:

执行环境栈 = [globalContext]

现在写个例子:

var a = 1function d() {}function b() {  function c() {    d()  }  c()}b()

那么对应的执行环境栈为:

执行环境栈 = [  dContext  cContext,  bContext,  globalContext]

当每个执行环境执行完后,执行环境栈会将它往外丢,最后只剩下 globalContext。globalContext 直到应用程序退出(如关闭网页或浏览器)时才会摧毁。。

? 参考

  • by 田小计划
  • by 冴羽

转载地址:http://vmwfx.baihongyu.com/

你可能感兴趣的文章
NLP概览(一)
查看>>
[MSSQL]如何高效查询表的总记录数
查看>>
HDU 1711 Number Sequence
查看>>
JS直接导出excel 兼容ie、chrome、firefox
查看>>
JPA(4)表表关联关系
查看>>
系统集成项目管理视频课程
查看>>
cad2013
查看>>
JavaMail发送简单邮件
查看>>
最大公约数、欧几里得算法、拓展欧几里得算法、同余方程
查看>>
SpringBoot之Controller使用
查看>>
Focal Loss
查看>>
ubuntu下git clone 出现Permission denied (publickey).
查看>>
前端UI框架
查看>>
python_内置函数1_42
查看>>
每一个中国系统架构师,程序猿都应该清楚了解——中国网络安全的现状
查看>>
第十三周项目3-立体类族共有的抽象类
查看>>
苹果iOS引入新触控手势:按住后扫动(图)
查看>>
二叉树——森林的带度数层次序列存储
查看>>
数据结构之线性结构---栈
查看>>
SublimeText插件 : sass语法高亮
查看>>