全局函数的作用域和执行环境

来源:互联网 发布:网络开发项目管理课程 编辑:程序博客网 时间:2024/06/06 20:48
function f(){    var a=1;    aa=function(){//全局函数,前面如果加一个var那就是局部函数了            a+=1;        }  function bb(){        alert(a);    }   return bb;}var f1=f();//得到返回值bbf1();//1aa();f1();//2

此题中,aa函数是全局函数(因为前面没有var),可以直接在全局中被调用,并且它能访问f中的局部变量a,为什么?因为函数运行在定义它的环境中,而非调用它的环境中。对于aa来说,定义它的环境是f,调用它的环境是window。全局函数是说函数在任何作用域都可以被调用,也就是说它在全局任何一个角落都可以被访问,在任何角落都是有效的。但是当你在全局任何一个角落调用全局函数时,全局函数还是会回到定义它的作用域中,从那里开始沿着作用域链向上搜索各级执行环境,直到找到所需标识符为止。

原创粉丝点击