猿问

JS中,函数A return 出函数B,请问函数A和B的作用域是什么关系?是上下级关系还是平行关系?

JS中,函数A ,return 出函数B,请问函数A和B的作用域是什么关系?是上下级关系还是平行关系?


比如在学习闭包的时候,常常会遇到这样的例子:


function a(){

    var x=10;

    return function b(){

        x++;

        alert("x为:"+x);

    }

}

显然在这种情况下,b()是a()的下级作用域,才能访问a()中的变量x。


而我目前理解的是:

函数A return出的函数B,它们的作用域是平行关系。


a()像我们的肚子,如果b()在肚子里面,那么b()确实是a()的下级作用域。但是现在b()被a()return出来了,就像从肚子里面排遗出来一样,那么b()就从a()中脱离出来了,所以我目前认为它们是平行关系。


因为还有个例子是这样的:


var name="大王";

var obj={

    name="小王";

    getName:function(){

        return function(){

               return this.name;

               }

    }

};

var ele=obj.getName();//function(){return this.name;};

alert(ele());//大王


//或者用

alert(obj.getName()());//大王

这个例子里面obj.getName() --> return出来的函数就是全局函数。

你看这里,对象的方法也是函数对不对?但这个例子就说明它return出来的函数不在这个方法的作用域里面,而是和对象平行的作用域。


所以很疑惑,请各位大神讲解讲解!


HUX布斯
浏览 528回答 2
2回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答