JS中,函數(shù)A,return出函數(shù)B,請(qǐng)問函數(shù)A和B的作用域是什么關(guān)系?是上下級(jí)關(guān)系還是平行關(guān)系?比如在學(xué)習(xí)閉包的時(shí)候,常常會(huì)遇到這樣的例子:functiona(){varx=10;returnfunctionb(){x++;alert("x為:"+x);}}顯然在這種情況下,b()是a()的下級(jí)作用域,才能訪問a()中的變量x。而我目前理解的是:函數(shù)Areturn出的函數(shù)B,它們的作用域是平行關(guān)系。a()像我們的肚子,如果b()在肚子里面,那么b()確實(shí)是a()的下級(jí)作用域。但是現(xiàn)在b()被a()return出來了,就像從肚子里面排遺出來一樣,那么b()就從a()中脫離出來了,所以我目前認(rèn)為它們是平行關(guān)系。因?yàn)檫€有個(gè)例子是這樣的:varname="大王";varobj={name="小王";getName:function(){returnfunction(){returnthis.name;}}};varele=obj.getName();//function(){returnthis.name;};alert(ele());//大王//或者用alert(obj.getName()());//大王這個(gè)例子里面obj.getName()-->return出來的函數(shù)就是全局函數(shù)。你看這里,對(duì)象的方法也是函數(shù)對(duì)不對(duì)?但這個(gè)例子就說明它return出來的函數(shù)不在這個(gè)方法的作用域里面,而是和對(duì)象平行的作用域。所以很疑惑,請(qǐng)各位大神講解講解!
JS中,函數(shù)A return 出函數(shù)B,請(qǐng)問函數(shù)A和B的作用域是什么關(guān)系?是上下級(jí)關(guān)系還是平行關(guān)系?
犯罪嫌疑人X
2019-05-24 11:55:53