函式屬於一種物件,但和一般物件仍有所不同。
首先,函式必定可以被呼叫,且含有程式碼片段。
程式碼片段中,可以包含傳入值的參數、區域變數、this
、可回傳的值return
。
另外,函式可以選擇命名,稱為具名函式,又稱函式陳述式;或是選擇不命名,稱之為匿名函式,或是函式表達式。
匿名函式仍具有可被呼叫的性質,但不是所有的函式表達式都是匿名函式。
又稱 IIFE。可以不用呼叫,直接被執行的函式,稱之為匿名函式。
寫法分兩種:
(function IIFE(){
// 要執行的程式
}());
(function IIFE(){
// 要執行的程式
})();
立即函式和一般函式的差異在於多了一個半形小括弧(()
),且函式本身也要用半形小括弧(()
)包覆起來。
而上面兩種寫法的差異在於包覆的半形小括弧(()
)的位置。
增加的一個半形小括弧(()
)放在函式的尾端,並加上一個半形分號(;
),記得一定要加半形分號(;
),因為當連續寫兩個立即函式時,編譯器不會主動未立即函式加上結束的半形分號(;
),可能會出現錯誤。
而包覆的半形小括弧(()
),可以選擇將尾端的半形小括弧(()
)一起包覆起來,或是僅包覆到右半形大括弧(}
)結束,讓尾端的半形小括弧(()
)獨立在外。
立即函式最大的作用,在於會立即執行,不需額外呼叫。並且無法在函式外再被執行,常用來約束變數的作用域。
此外,通常立即函式可以省略函式的命名,使用匿名的方式進行。
(function (sex){
return sex;
})("我是女生");
參數放在最後的半形小括弧(()
)中,回傳給前面半形小括弧(()
)中參數的變數。
半形大括弧({}
)內,可以寫需要回傳的值,利用return
的方式。
(function IIFE(參數的變數){
// 要執行的程式,可寫回傳的return
})(參數);
ex:
(function IIFE(sex){
return sex;
})("我是女生");