- 全局执行上下文:默认的上下文,任何不在函数内部的代码都在全局上下文里面。它会执行两件事情:创建一个全局的的 window 对象,并且设置 this 为这个全局对象。一个程序只有一个全局对象。
- 函数执行上下文:每当一个函数被调用时,就会为该函数创建一个新的上下文,每个函数都有自己的上下文,不过是在被函数调用的时候创建的。函数上下文可以有任意多个,每当一个新的执行上下文被创建,他会按照定义的顺序执行一系列的步骤。
- Eval 函数执行上下文:执行在
eval
函数内部的代码有他自己的执行上下文。
执行栈就是一个调用栈,是一个后进先出数据结构的栈,用来存储代码运行时创建的执行上下文。
全局执行上下文中,this
指向全局对象。
函数执行上下文中,this 取决于函数是如何被调用的。如果他被一个引用对象调用,那么 this
会设置成那个对象,否则是全局对象。