国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js自執行函數的幾種不同寫法的比較

2024-05-06 14:21:24
字體:
來源:轉載
供稿:網友
經常需要一個函數自執行,可惜這一種寫法是錯的:
代碼如下:
function(){alert(1);}();

原因是前半段“function(){alert(1);}”被當成了函數聲明,而不是一個函數表達式,從而讓后面的“();”變得孤立,產生語法錯。

按上面的分析,這一段代碼雖說沒有語法錯,但也是不符合我們的預期的,因為這個函數并沒有自執行。
代碼如下:
function(){alert(1);}(1);

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

方法1:最前最后加括號

代碼如下:
(function(){alert(1);}());

這是jslint推薦的寫法,好處是,能提醒閱讀代碼的人,這段代碼是一個整體。
例如,在有語法高亮匹配功能的編輯器里,光標在第一個左括號后時,最后一個右括號也會高亮,看代碼的人一眼就可以看到這個整體。
不過,對于某些寫代碼不喜歡在行后加分號的同學,也會形成一些坑坑,例如以下代碼會報運行錯:
代碼如下:
var a=1
(function(){alert(1);}());


方法2:function外面加括號

代碼如下:
(function(){alert(1);})();

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

方法3:function前面加運算符,常見的是!與void 。
代碼如下:
!function(){alert(1);}();
void function(){alert(2);}();


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

最后,代表我個人,強烈支持方法1,即jslint的推薦寫法:
代碼如下:
(function(){alert(1);}());
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 临夏市| 海盐县| 兴仁县| 确山县| 吉林省| 南康市| 新宾| 二连浩特市| 泾阳县| 古交市| 化州市| 千阳县| 赫章县| 垫江县| 哈巴河县| 抚顺县| 平凉市| 磐石市| 探索| 吉安市| 高邮市| 邵东县| 新野县| 麻阳| 高台县| 奉节县| 精河县| 台北市| 潜山县| 都江堰市| 伊金霍洛旗| 东宁县| 缙云县| 德化县| 新和县| 同江市| 仙桃市| 老河口市| 禹城市| 遂平县| 信阳市|