匿名函數就是沒有實際名字的函數。
javaScript的匿名函數形式多樣,而且不搞清楚,容易看暈程式碼。
以下是成功呼叫的匿名函數:
(function f1() {
alert(4);
})(); //不是匿名函式也能這樣呼叫! !
void function(){
alert('void water');
}();//據說效率最高,Javascript中void是一個運算符,該運算子指定要計算一個表達式但不傳回值。
!function(){
alert('!water');
}(); //運算子 匿名函式呼叫
(function(){
alert('water');
}());//小括號 匿名函數,有點強制執行的味道~
//錯誤寫法2
(function () {
alert(6);
}); //語法沒有錯誤,沒有呼叫的匿名函數,後面也沒有機會呼叫了,因為沒有名字,找不到呼叫入口。
//錯誤寫法3
function () {
alert(1);
}();//沒有產生函數的引用就呼叫
小括號能把我們的表達式組合分塊,並且每一塊,也就是每一對小括號,都有一個回傳值。這個回傳值其實也就是小括號中表達式的回傳值。所以,當我們用一對小括號把匿名函數括起來的時候,實際上小括號對回傳的,就是一個匿名函數的Function物件。因此,小括號對加上匿名函數就如同有名字的函數般被我們取得它的引用位置了。所以如果在這個引用變數後面再加上參數列表,就會實作普通函數的呼叫形式。