皈依舞
2018-10-10 13:15:19
//第一段代碼(function(){ //dosomething})()上邊這段代碼,我可以理解寫成: var something=function(){ //dosomething}something();這里的something是function(){//dosomething}的指針,可以用后者(實(shí)際對(duì)象)替換該指針something,則something()可以寫成(function(){//dosomething})(),但是,如果我把第一段代碼中()()第一個(gè)括號(hào)中匿名函數(shù)寫成有名函數(shù)foo:(function foo(){ //dosomething})()這里的代碼第一個(gè)()括號(hào)里是一個(gè)函數(shù)聲明,而不是像前面是一個(gè)函數(shù)表達(dá)式,似乎不能按照上述的演算過(guò)程,這里該如何理解呢???就是說(shuō),如果把匿名函數(shù)變成了有名函數(shù),該如何理解其中的調(diào)用??還煩請(qǐng)大神解惑!!
1 回答

慕容森
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
(function foo(global){ //dosomething })(window);
其實(shí)這里你寫不寫名字都沒(méi)什么關(guān)系;因?yàn)槟闶橇⒓磮?zhí)行。
同常為了省事,寫 立即執(zhí)行 時(shí)候,是不需要給函數(shù)帶名字的,意思就是說(shuō)函數(shù)在這執(zhí)行就好了,根本就不打算在后面再調(diào)用,沒(méi)必要取個(gè)名字。當(dāng)然寫了,也沒(méi)什么關(guān)系。
但是通常情況下單純 寫個(gè)函數(shù) 就應(yīng)該給他個(gè)名字,不論是聲明的形式,還是表達(dá)式的形式,不然會(huì)報(bào)錯(cuò)。原因你可以理解為,如果 你就 寫了個(gè) function(){...};
這個(gè)么東東,是沒(méi)有意義的,是個(gè)垃圾。因?yàn)槟愫竺娓揪蜎](méi)法調(diào)用! 你要么就立即調(diào)用,要么就賦給個(gè)變量,以便后面視情況調(diào)用。
添加回答
舉報(bào)
0/150
提交
取消