js在执行是会有一个“准备工作”:
主要内容有 1、变量、函数表达式——>变量声明,默认赋值为undefined;
2、this——>赋值;
3、函数声明——>赋值;
这三种数据的准备情况我们称之为“执行上下文”或者“执行上下文环境”。
javascript在执行一个代码段之前,都会进行这些“准备工作”来生成执行上下文。这个“代码段”其实分三种情况——全局代码,函数体,eval代码。
函数每被调用一次,都会产生一个新的执行上下文环境;函数在定义的时候(不是调用的时候),就已经确定了函数体内部自由变量的作用域.
代码段是函数体,对参数,arguments,以及自由变量的取值作用域都是赋值。
执行上下文通俗的定义——在执行代码之前,把将要用到的所有的变量都事先拿出来,有的直接赋值了,有的先用undefined占个空。
详细:http://www.cnblogs.com/wangfupeng1988/p/3986420.html