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出來的函數不在這個方法的作用域里面,而是和對象平行的作用域。所以很疑惑,請各位大神講解講解!
JS中,函數A return 出函數B,請問函數A和B的作用域是什么關系?是上下級關系還是平行關系?
HUX布斯
2019-02-12 13:14:17