這篇文章主要介紹了深入淺析JavaScript函數(shù)前面的加號和嘆號的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
+function(){}();
這里的加號,也可以替換成!,~等其他一元操作符,其效果相當(dāng)于:
(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
如果沒有這個加號的話,解析器會認(rèn)為function是一個函數(shù)聲明的開始,而后面()將會導(dǎo)致語法錯誤。在function前面加上+號時,就變成了一個函數(shù)表達(dá)式,而函數(shù)表達(dá)式后面又添加了一個()就變成了一個立即執(zhí)行的函數(shù)了。
下面看下js函數(shù)前面感嘆號的作用:
一、JS函數(shù)聲明形式
function fnA(){alert('msg');} //聲明式定義函數(shù)
二、JS函數(shù)表達(dá)式形式
var func = function(agr1,arg2){ //創(chuàng)建匿名函數(shù)
alert(arg1 + ' ' + arg2);
}
三、JS匿名函數(shù)聲明完立即執(zhí)行的常見格式
(function() { /* code */ })();
說明:
1、包圍函數(shù)(function(){})的第一對括號向腳本返回未命名的函數(shù),隨后一對空括號立即執(zhí)行返回的未命名函數(shù),括號內(nèi)為匿名函數(shù)的參數(shù)。
2、使用括號包裹定義函數(shù)體,解析器將會以函數(shù)表達(dá)式的方式去調(diào)用定義函數(shù)。也就是說,任何能將函數(shù)變成一個函數(shù)表達(dá)式的作法,都可以使解析器正確的調(diào)用定義函數(shù)。而 ! 就是其中一個,而 + - || 都有這樣的功能。
3、該函數(shù)的作用主要為 匿名 和 自動執(zhí)行