函數(shù)的聲明有兩種主要的方式
function show(){
//函數(shù)體
}
或者
var s = function show(){
//函數(shù)體
}
如果這樣定義,解析器是無法理解的:
function show(){
//函數(shù)體
}();
因?yàn)檫@是一個(gè)定義函數(shù)
但是如果我們更改書寫方式:
(function show(){
//函數(shù)體
})();
這種方式就是可以執(zhí)行的,這是調(diào)用匿名函數(shù),其內(nèi)部的原理是:
使用括號(hào)定義函數(shù),解析器將會(huì)以函數(shù)表達(dá)的方式去調(diào)用定義函數(shù)
通過這句話我們可以理解,任何一個(gè)將函數(shù)變成一個(gè)函數(shù)表達(dá)式的方法都可以使得解析器正確的調(diào)用函數(shù)。
以此類推:
!function
這種方式也就不難理解了。
當(dāng)然既然!是可以的,+、-、||這些方式也都是行得通的。