执行上下文

187 阅读1分钟

执行上下文

执行上下文的类型:

  • 全局执行上下文
  • 函数执行上下文
  • Eval函数执行上下文(很少用)

执行栈:也叫调用栈,LIFO,用于存储代码执行时创建的上下文; 执行上下文分为两个阶段:创建阶段、执行阶段

创建阶段:

- 确定this,This Binding   
- LexicalEnvironment
- VariableEnvironment (含let、const时创建)

变量提升

  1. 变量提升
foo;  // undefined
var foo = function () {
    console.log('foo1');
}

foo();  // foo1,foo赋值

var foo = function () {
    console.log('foo2');
}

foo(); // foo2,foo重新赋值
  1. 函数提升
foo();
function foo() {
    console.log('foo1');
}

foo();

function foo() {
    console.log('foo2');
}

foo();
// foo2 foo2  foo2
  1. 函数提升 > 变量提升
foo();
var foo = function() {
    console.log('foo1');
}

foo();

function foo() {
    console.log('foo2');
}

foo();
// foo2, foo1, foo1