您好,登錄后才能下訂單哦!
注:函數(shù)聲明和函數(shù)表達(dá)式的相同點(diǎn)包括但不限于以下幾點(diǎn)
函數(shù)是一個(gè)值,所以和其他值一樣,函數(shù)也可以進(jìn)行被輸出、被賦值、作為參數(shù)傳給其他函數(shù)等相關(guān)操作,不管函數(shù)是以什么方式被定義的,當(dāng)然和其他值的輸出還是有些區(qū)別的。
我們先來輸出這個(gè)值:
function nameAlert(name){ alert('博主的名字是:' + name + ' 。'); } alert(nameAlert); 注意輸出的結(jié)果并不是1,而是這個(gè)函數(shù)的整個(gè)源代碼,即輸出結(jié)果為:function nameAlert(name){ alert('博主的名字是:' + name + ' 。'); }
作為參數(shù)傳給其他函數(shù)。
function nameAlert(name){ alert('博主的名字是:' + name + ' 。'); }var anotherNameAlert=nameAlert; anotherNameAlert('myvin');
該例子中將函數(shù)nameAlert
作為參數(shù)傳給了anotherNameAlert
,然后anotherNameAlert
也指向了該函數(shù)。
這里就涉及到了函數(shù)的傳遞,函數(shù)的傳遞是傳引用,就是說函數(shù)存在內(nèi)存中的某個(gè)位置,nameAlert
和anotherNameAlert
是都是函數(shù)的一個(gè)引用,把函數(shù)名nameAlert
賦值給anotherNameAlert
的時(shí)候,它們引用的都是同一個(gè)函數(shù)。
所以anotherNameAlert
的輸出結(jié)果為:
博主的名字是:myvin 。
當(dāng)然函數(shù)還有其他特點(diǎn),在此不再介紹,感興趣的可以自己總結(jié)下。
注:函數(shù)聲明和函數(shù)表達(dá)式的不同點(diǎn)包括但不限于以下幾點(diǎn)
相對函數(shù)聲明和函數(shù)表達(dá)式之間的相同點(diǎn),它們的不同點(diǎn)更應(yīng)該值得我們關(guān)注。下面我結(jié)合自己的理解聊聊。
函數(shù)聲明必須有標(biāo)識符,也就是常說的函數(shù)名;函數(shù)表達(dá)式可以省略函數(shù)名。
關(guān)于它們的定義的不同小伙伴們應(yīng)該都知道,我們簡單重復(fù)一遍。
如下:
function functionName(arg1, arg2, ...){ <!-- function body -->}
省略標(biāo)識符:
var variable=function(arg1, arg2, ...){ <!-- function body -->}
帶有標(biāo)識符:
var variable=function functionName(arg1, arg2, ...){ <!-- function body -->}
事實(shí)上,js的解析器對函數(shù)聲明與函數(shù)表達(dá)式并不是一視同仁地對待的。對于函數(shù)聲明,js解析器會優(yōu)先讀取,確保在所有代碼執(zhí)行之前聲明已經(jīng)被解析,而函數(shù)表達(dá)式,如同定義其它基本類型的變量一樣,只在執(zhí)行到某一句時(shí)也會對其進(jìn)行解析,所以在實(shí)際中,它們還是會有差異的,具體表現(xiàn)在,當(dāng)使用函數(shù)聲明的形式來定義函數(shù)時(shí),可將調(diào)用語句寫在函數(shù)聲明之前,而后者,這樣做的話會報(bào)錯。
參考鏈接:http://www.cnblogs.com/myvin/p/4649789.html
http://blog.csdn.net/one_and_only4711/article/details/6361131
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。