The Execution Context(执行上下文)
- understanding
- hoisting
- scope
- 怎么由来的?
- 由 HS 引擎使用内存堆(memroy heap)和调用栈(call stack)创建
描述- 理解一 包装器,包含用于管理所执行代码的信息
- 理解二 代码执行的环境
代码
// 全局对象 / 全局环境变量 /全局执行上下文(global execution context)
console.log(window);
// Node 中全局对象
console.log(global, this);
// 指向当前对象的引用
console.log(this);
设置全局执行上下文 在 JS 引擎中将运行两个阶段
-
创建阶段(create global object)- 创建 了一个全局对象,在浏览器中是一个已知的全局窗口
- 创建 this,并将其绑定导全局对象
global object中 - 建立 内存占,存放变量和函数声明
-
执行阶段(Execution Phase:逐行执行代码)-
作用 知道变量和函数在执行代码行之前存储在内存中
(call stack)通过代码工作的调用堆栈(Assigns values to variables)为这些变量赋值- 为变量设置一个内存位置 => 在
阶段一中变量建立了,但是直到执行阶段才赋值 - 理解 一旦我们开始执行代码,就是分配值的时候
- 为变量设置一个内存位置 => 在
(invokes functions)调用函数- 注意 调用函数时,会创建一个新的执行上下文
-
// 不规则排序
// 输出:
// 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();