深入淺析JavaScript函數(shù)前面的加號(hào)和嘆號(hào)
+function(){}();
這里的加號(hào),也可以替換成!,~等其他一元操作符,其效果相當(dāng)于:
(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
如果沒有這個(gè)加號(hào)的話,解析器會(huì)認(rèn)為function是一個(gè)函數(shù)聲明的開始,而后面()將會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。在function前面加上+號(hào)時(shí),就變成了一個(gè)函數(shù)表達(dá)式,而函數(shù)表達(dá)式后面又添加了一個(gè)()就變成了一個(gè)立即執(zhí)行的函數(shù)了。
下面看下js函數(shù)前面感嘆號(hào)的作用:
一、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 */ })();
說(shuō)明
1、包圍函數(shù)(function(){})的第一對(duì)括號(hào)向腳本返回未命名的函數(shù),隨后一對(duì)空括號(hào)立即執(zhí)行返回的未命名函數(shù),括號(hào)內(nèi)為匿名函數(shù)的參數(shù)。
2、使用括號(hào)包裹定義函數(shù)體,解析器將會(huì)以函數(shù)表達(dá)式的方式去調(diào)用定義函數(shù)。也就是說(shuō),任何能將函數(shù)變成一個(gè)函數(shù)表達(dá)式的作法,都可以使解析器正確的調(diào)用定義函數(shù)。而 ! 就是其中一個(gè),而 + - || 都有這樣的功能。
3、該函數(shù)的作用主要為 匿名 和 自動(dòng)執(zhí)行
相關(guān)文章
網(wǎng)頁(yè)右側(cè)懸浮滾動(dòng)在線qq客服代碼示例
這篇文章主要介紹了網(wǎng)頁(yè)右側(cè)懸浮滾動(dòng)qq在線客服代碼示例,需要的朋友可以參考下2014-04-04
js使用i18n實(shí)現(xiàn)頁(yè)面國(guó)際化的方法
本篇文章主要介紹了js使用i18n實(shí)現(xiàn)頁(yè)面國(guó)際化的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
使用 bootstrap modal遇到的問(wèn)題小結(jié)
bootstrap提供了一個(gè)寫好的css文件和js文件然而在使用時(shí)遇到了一下并不是很好的問(wèn)題,今天在使用彈出對(duì)話框時(shí)遇到了一個(gè)這樣的問(wèn)題,今天小編給大家分享下使用 bootstrap modal遇到的問(wèn)題小結(jié),一起看看吧2016-11-11
JavaScript中關(guān)于iframe滾動(dòng)條的去除和保留
在開發(fā)中經(jīng)常遇到去掉全部的滾動(dòng)條,去掉右邊的滾動(dòng)條且保留底下的滾動(dòng)條,去掉底下的滾動(dòng)條且保留右邊的滾動(dòng)條,大家基于js是怎么實(shí)現(xiàn)的呢?下面小編通過(guò)本文給大家詳細(xì)介紹下,對(duì)js iframe滾動(dòng)條相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-11-11
微信小程序云開發(fā)之使用云數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了微信小程序云開發(fā)之使用云數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
JavaScript實(shí)現(xiàn)左右下拉框動(dòng)態(tài)增刪示例
本篇文章主要介紹了JavaScript實(shí)現(xiàn)左右下拉框動(dòng)態(tài)增刪示例,可以對(duì)下拉框進(jìn)行刪除和增加,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03

