执行环境以及作用域
按照小编的理解,应该呢,是先创建执行环境,然后通过执行环境来创建该环境的作用域链,毕竟,在实际中,函数有很多。
执行环境(execution context,为简单起见,有时也称为 “环境”)是 JavaScript 中最为重要的一个概念。
- 环境的定义:执行环境定义了 变量或函数 有权访问的 其它数据,决定了它们各自的行为。
- 环境有作用域分为哪些:分为 全局执行环境 和 局部执行环境两种,其中全局执行环境是最外围的一个执行环境,根据ECMAScript 实现所在的宿主环境不同,表示执行环境对象也不一样。在web浏览器中,全局执行环境是 window 对象。
- 环境的产生:每个函数在被调用时都会创建自己的 环境,在某个执行环境中,所有的代码执行完毕后,该环境就会被销毁,而全局执行环境则是整个程序退出被销毁,例如网页或则浏览器关闭。
- 环境的运作方式:环境产生之后,当执行流进入一个函数时,函数环境就会被推入一个环境栈中,而在函数执行完毕(环境被销毁),栈将其弹出,把控制权交给之前的执行环境。
- 每个执行环境都有一个与之关联的 变量对象(variable object),环境中定义的所有变量和函数都会保存在这个对象中,这个对象是不可见的,但解析器也可以访问到他们。
code:
var color ="red"; function changeColor(){ var anotherColor = "blue"; function swapColors(){ //变量互换 //在这里可以访问到 annotherColor,color和 tempColor var tempColor = anotherColor; anotherColor = color; color = tempColor; } //这里可以访问到 anotherColor和color swapColors(); } //这里可以访问到 color changeColor()