单元二之第一章执行上下文

98 阅读1分钟

The Execution Context(执行上下文)

  • understanding
  • hoisting
  • scope
  1. 怎么由来的?
  1. 由 HS 引擎使用内存堆(memroy heap)和调用栈(call stack)创建
  • 描述
    • 理解一 包装器,包含用于管理所执行代码的信息
    • 理解二 代码执行的环境

代码

// 全局对象 / 全局环境变量 /全局执行上下文(global execution context)
console.log(window);
// Node 中全局对象
console.log(global, this);

// 指向当前对象的引用
console.log(this);

设置全局执行上下文 在 JS 引擎中将运行两个阶段

  1. 创建阶段(create global object)

    1. 创建 了一个全局对象,在浏览器中是一个已知的全局窗口
    2. 创建 this,并将其绑定导全局对象global object
    3. 建立 内存占,存放变量和函数声明
  2. 执行阶段(Execution Phase:逐行执行代码)

    • 作用 知道变量和函数在执行代码行之前存储在内存中

    1. (call stack) 通过代码工作的调用堆栈
    2. (Assigns values to variables) 为这些变量赋值
      1. 为变量设置一个内存位置 => 在阶段一中变量建立了,但是直到执行阶段才赋值
      2. 理解 一旦我们开始执行代码,就是分配值的时候
    3. (invokes functions) 调用函数
      1. 注意 调用函数时,会创建一个新的执行上下文
// 不规则排序
// 输出:
// undefined
// in numFunction

console.log(num);

var num = 10;

numFunction();

function numFunction() {
  console.log("in numFunction");
}

console.log(num);

// 正常顺序// 输出:
// 10
// in numFunction

var num = 10;
console.log(num);

function numFunction() {
  console.log("in numFunction");
}
numFunction();