在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 為什么這不能是一個(gè)js函數(shù)呢?

為什么這不能是一個(gè)js函數(shù)呢?

function f3(){
    var n=9;
     n+=1;
   console.log(n);
}
var clouser=f3();
clouser();

這個(gè)函數(shù)可以打印出n的值,為什么在控制臺(tái)里會(huì)顯示Uncaught TypeError: clouser is not a function.??在學(xué)習(xí)閉包的概念,如果代碼是下面這樣的就不會(huì)報(bào)錯(cuò),我以為是要有return,但是上面這樣寫,我加了句return n,還是會(huì)報(bào)同樣的錯(cuò)誤,一定要閉包才能是函數(shù)?

function f3(){
    var n=9;
    nAdd=function(){
        n=n+1;
        console.log(n);
    }
    return nAdd;
}
var clouser=f3();
clouser();
回答
編輯回答
安淺陌

跟閉包沒(méi)關(guān)系啊,你下面的那個(gè)返回的是一個(gè)函數(shù),上面的返回的n是一個(gè)值,肯定不行了。

2017年5月20日 15:58
編輯回答
耍太極
function f3(){
    var n=9;
     n+=1;
   console.log(n);
}
var clouser=f3();
clouser();

在這個(gè)例子中,函數(shù)f3沒(méi)有顯式return,根據(jù)規(guī)范,引擎會(huì)隱式返回一個(gè)undefinded,即相當(dāng)于在f3函數(shù)體最后一行加上return undefined。

return后面的表達(dá)式就是函數(shù)的返回值。而對(duì)于一個(gè)函數(shù),在后面加上一對(duì)圓括號(hào)()代表運(yùn)行這個(gè)函數(shù),將返回值賦給等號(hào)左邊的變量。

因此變量clouser的值是undefined。undefined是無(wú)法運(yùn)行的。

下面的例子同理,區(qū)別在于最后return的是一個(gè)函數(shù),因此clouser也是一個(gè)函數(shù),所以是可以運(yùn)行的。

2017年9月14日 23:58