Javascript 兩種 function 定義的區(qū)別
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
大家都知道Javascript 有兩個(gè)種定義Function的方法非常常用。例如
function a(){alert("a")} var a = function(){alert("a")} 雖然兩個(gè)種方式定義出來的 function 調(diào)用的時(shí)候結(jié)果一樣,但是中間還是有區(qū)別的。舉個(gè)簡單的例子,假如我們要重定義 a() ,而且新的方法要繼承 a() 里面所有方法并且進(jìn)行其他擴(kuò)展的話。就可以明顯看到這兩個(gè)方式的區(qū)別了。 1. 首先,我們先建立一個(gè)臨時(shí)的變量來存儲(chǔ) a() var b = a; 然后,重新定義a() 第一種方式: function a(){ b(); alert("ok"); } 第二種方式: a = function(){ b(); alert("ok"); } 這是大家可以嘗試發(fā)現(xiàn)。第一種方式重新定義的 a() 會(huì)出現(xiàn)堆棧溢出的錯(cuò)誤。而第二種方式卻成功保留了原來 a() 所執(zhí)行的腳本,成功 alert 出了 "a" "ok" 的字樣,說明 a() 的方法被重定義了。 這里就可以很明顯區(qū)分兩個(gè)方式的區(qū)別了。定義的順序不同。 第一種,剛開始其實(shí)沒有重新定義 a 這個(gè)function 而在里面執(zhí)行了其本身。 第二種方式, a = function () 這里沒有執(zhí)行到 function 里面的代碼 a 已經(jīng)被重新定義了。所以這里的重定義是有效的。 該文章在 2011/3/11 23:20:10 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |