每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈。当代码在环境中执行时,会创建变量对象的一个作用域链(保证执行环境有权访问的所有变量和函数的有序访问。)
var a='2';
function getMess()
{
var b=3;
function getAB(){
alert(a+b);
};
getAB();
}
getMess();
结果alert(23);
原因:以上代码共有3个执行环境:
全局执行环境:window
getMess()局部环境,getAB()局部环境,
内部环境可以访问作用域链的所有的外部环境,外部环境不能访问内部环境的中的任何变量和函数。