美文网首页
JavaScript 执行上下文

JavaScript 执行上下文

作者: BlueSkyBlue | 来源:发表于2020-04-26 19:30 被阅读0次

JavaScript代码分为全局代码函数(局部)代码

全局执行上下文

在执行代码前将window定义为全局执行上下文。
对全局数据进行预处理:

  1. var定义的全局变量为undefined。添加为window属性。
  2. function定义的全局函数。提升为window方法。
  3. this赋值为window。
  4. 开始执行全局代码
console.log(a1)
console.log(a2)
console.log(this)

var a1 = 3
function a2(){

}

该段代码的执行相当于下面这段代码

console.log(window.a1)
window.a2()
console.log(this)

var a1 = 3
function a2(){

}

函数执行上下文

在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象。
对局部数据进行预处理:

  1. 形参变量为赋值的实参,添加为上下文执行的属性。
  2. arguments按照实参列表赋值,添加为上下文属性。
  3. var定义的局部变量为undefined。添加为上下文的属性。
  4. function的声明函数赋值。添加为上下文的属性。
  5. this赋值(调用函数的对象)。
  6. 开始执行函数体代码。

函数执行上下文对象是一个虚拟的对象。

function fn(a1){
  console.log(a1)
  console.log(a2)
  a3()
  console.log(this)
  console.log(arguments)

  var a2 = 3
  function a3(){
    console.log('a3')
  }
}

在fn的开始处可以访问a1, a2, a3, this, arguments。
其中arguments是伪数组。
栈中有一片区域专门给调用使用。即给console.log使用。

执行上下文栈

在全局代码执行前,JS引擎会创建一个栈来存储管理所有的执行上下文对象。在全局上下文(window)确定后,将其添加到栈中(压栈)。在函数执行上下文创建好之后,将其添加到栈中(压栈)。在当前函数执行完之后,将栈顶对象移除(出栈)。当所有代码执行完之后,栈中只剩下window。

var a = 10
var bar = function(x){
  var b = 5
  foo(x + b)
}

var foo = function(y){
  var c = 5
  console.log(a + c + y)
}
bar(10)

该代码总共产生了三个执行上下文对象。两个函数执行上下文对象。栈底的元素永远是window。

相关文章

  • 执行上下文

    深入理解JavaScript执行上下文、函数堆栈、提升的概念 解密 JavaScript 执行上下文

  • js深度剖析 : 执行环境和作用域链

    执行上下文 execution context 又称执行上下文或者执行环境. 执行上下文是JavaScript中一...

  • JavaScript 执行

    JavaScript 执行 一段 JavaScript 经过编译会生成两部分:执行上下文,可执行代码。在执行上下文...

  • 精品技术贴汇总

    about 执行上下文 深入理解JavaScript执行上下文、函数堆栈、提升的概念 JavaScript深入之变...

  • 深入浅出执行上下文、词法环境、变量环境

    执行上下文的概念 执行上下文:javascript 代码解析和执行时所在的环境。 执行上下文的类型 执行上下文分为...

  • 2020年前端面试复习必读文章

    1. JavaScript 基础 1.1 执行上下文/作用域链/闭包 理解 JavaScript 中的执行上下文和...

  • 编写高效的javascript

    读书笔记 1.当执行javascript代码时,javascript引擎会创建一个执行上下文。执行上下文设定了代码...

  • 执行上下文

    [TOC] 1.执行上下文 1.什么是执行上下文? 简而言之,执行上下文是评估和执行 JavaScript 代码的...

  • 执行上下文(个人笔记)

    本文参考:javaScript执行上下文和执行上下文栈一篇文章看懂JS执行上下文什么是执行上下文?什么是调用栈? ...

  • Javascript中执行上下文与执行栈

    执行上下文是当前 JavaScript 代码被解析和执行时所在环境的抽象概念。 执行上下文的类型 全局执行上下文:...

网友评论

      本文标题:JavaScript 执行上下文

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