执行上下文
- 每次当控制器转到可执行代码的时候,就会进入一个执行上下文。
- 单线程
- 同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
- 全局上下文只有唯一的一个,它在浏览器关闭时出栈
- 函数的执行上下文的个数没有限制
- 每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此。
生命周期
- 创建:生成变量对象-建立作用域链-确定this指向
- 执行:变量赋值-函数引用-执行其他代码
- 执行完毕后出栈,等待被回收
例子
var color = 'blue';
function changeColor() {
var anotherColor = 'red';
function swapColors() {
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
}
swapColors();
}
changeColor();
过程
- 全局上下文
- 全局上下文-changeColor()
- 全局上下文-changeColor()-swapColors()
- 全局上下文-changeColor()
- 全局上下文