执行上下文详解

执行上下文可以理解为当前代码的执行环境,它会形成一个作用域

function f1() {
  var n = 999;
  function f2() {
    alert(n);
  }
  return f2;
}
var result = f1();
result(); // 999

执行上下文详解_第1张图片
1.单线程
2.同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
3.全局上下文只有唯一的一个,它在浏览器关闭时出栈
4.函数的执行上下文的个数没有限制
5.每次某个函数被调用,就会创建一个新的执行上下文,即使是调用的自身函数,也是如此。

执行上下文详解_第2张图片
一.创建阶段
在这个阶段中,执行上下文会分别创建变量对象,建立作用域链,以及确定this指向。

二.代码执行阶段
创建完成之后,就会开始执行代码,会完成变量赋值,函数引用,以及执行其他代码。

let/const
let/const声明的变量,仍然会提前被收集到变量对象中,但和var不同的是,let/const定义的变量,不会在这个时候给他赋值undefined

你可能感兴趣的:(js)