一個關於javascript匿名函數的問題

匿名函數,就是沒有名字的函數。如:
function (){
    alert('a function');
}

但是,上面的代碼會報錯。firebug提示:function statement requires a name,也就是:函數必須要有個名字。

奇怪的是,如果我用一對()把這個沒有名字的函數包起來,就不會報錯瞭。如:
(function (){
    alert('a function');
})

(註意包裹函數的()!).雖然這樣不會報錯,但誰能知道這個函數是否聲明成功瞭呢?是不是因為根本沒聲明所以才不報錯呢?我們這樣來測試:讓函數自己執行一次:
(function (){
    alert('a function');
}())

可以看到,函數執行瞭,表明函數是存在的。
同樣,如果這個時候去掉包裹函數的(),則依然會報前面那個錯,函數也執行不瞭。。。
function (){
    alert('a function');
}()
 

 

摘自  十年燈

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *