执行环境
定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个变量对象中,但是我们编写代码不能访问这个变量对象,解析器在处理数据时会在后台使用它。
全局执行环境:在JavaScript中window对象表示的是全局执行环境,全局执行环境是最外围的环境,所有的全局变量和函数都是作为window对象的属性和方法的。这个执行环境在浏览器关闭时才进行销毁,也就是说window执行环境的生命周期贯穿整个浏览器显示。
活动对象:对象中包含了,当前函数可访问的变量及函数;变量对象,最开始包含的对象是参数的arguments对象,然后是在函数中定义的其他变量及方法。
function fn(name){
var text = "test";
}
// 变量对象中包含:命名函数fn变量、参数name、内部变量test
执行流和环境栈
每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。而在函数执行后,栈将其弹出,把控制权返回给之前的执行环境。即某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数也随之销毁。
在逻辑上执行流依次进入的执行环境形成了一个栈ÿ