最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js自執(zhí)行函數(shù)的幾種不同寫法的比較

 更新時(shí)間:2012年08月16日 11:31:19   作者:  
js自執(zhí)行函數(shù)的幾種不同寫法的比較,需要的朋友可以參考下
經(jīng)常需要一個(gè)函數(shù)自執(zhí)行,可惜這一種寫法是錯(cuò)的:
復(fù)制代碼 代碼如下:

function(){alert(1);}();

原因是前半段“function(){alert(1);}”被當(dāng)成了函數(shù)聲明,而不是一個(gè)函數(shù)表達(dá)式,從而讓后面的“();”變得孤立,產(chǎn)生語法錯(cuò)。

按上面的分析,這一段代碼雖說沒有語法錯(cuò),但也是不符合我們的預(yù)期的,因?yàn)檫@個(gè)函數(shù)并沒有自執(zhí)行。
復(fù)制代碼 代碼如下:

function(){alert(1);}(1);

綜上,癥結(jié)在于,如何明確代碼描述的是一個(gè)函數(shù)表達(dá)式,而不是函數(shù)聲明語句。
正確的寫法多種多樣,也各有利弊:

方法1:最前最后加括號(hào)

復(fù)制代碼 代碼如下:

(function(){alert(1);}());

這是jslint推薦的寫法,好處是,能提醒閱讀代碼的人,這段代碼是一個(gè)整體。
例如,在有語法高亮匹配功能的編輯器里,光標(biāo)在第一個(gè)左括號(hào)后時(shí),最后一個(gè)右括號(hào)也會(huì)高亮,看代碼的人一眼就可以看到這個(gè)整體。
不過,對(duì)于某些寫代碼不喜歡在行后加分號(hào)的同學(xué),也會(huì)形成一些坑坑,例如以下代碼會(huì)報(bào)運(yùn)行錯(cuò):
復(fù)制代碼 代碼如下:

var a=1
(function(){alert(1);}());


方法2:function外面加括號(hào)

復(fù)制代碼 代碼如下:

(function(){alert(1);})();

這種做法比方法1少了一個(gè)代碼整體性的好處。

方法3:function前面加運(yùn)算符,常見的是!與void 。
復(fù)制代碼 代碼如下:

!function(){alert(1);}();
void function(){alert(2);}();


顯然,加上“!”或“+”等運(yùn)算符,寫起來是最簡單的。
加上“void ”要敲五下鍵盤,但是聽說有一個(gè)好處是,比加"!"少一次邏輯運(yùn)算。----我只是聽說,不明所以。

最后,代表我個(gè)人,強(qiáng)烈支持方法1,即jslint的推薦寫法:
復(fù)制代碼 代碼如下:

(function(){alert(1);}());

相關(guān)文章

最新評(píng)論

日照市| 新闻| 敦煌市| 南充市| 乌海市| 沂源县| 凤台县| 库伦旗| 秦皇岛市| 胶州市| 长兴县| 余江县| 虹口区| 澎湖县| 积石山| 普洱| 宜兰县| 溧阳市| 班戈县| 青冈县| 平安县| 泰州市| 万山特区| 萍乡市| 顺义区| 怀集县| 永安市| 扎囊县| 乌兰察布市| 丰都县| 柳林县| 宁化县| 汕尾市| 金湖县| 高青县| 阳山县| 滦平县| 诸暨市| 胶州市| 兖州市| 新民市|