麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript匿名函數的寫法

2019-11-17 03:51:36
字體:
來源:轉載
供稿:網友
可以想像得到,有很多方法立即執行匿名函數,簡單的整理就有下面三種的典型方式(還有其他方式的,歡迎告知):



方式一
(function() {
    // …
})();

方式二
void function() {
  // …
}();



方式三
~function() {
   // …
}();

方式一 和 方式二 大家可能都看到過,這里主要說明下 方式三。在說明 方式三 之前,我們現回顧下運算符“~”(位取反)在 EMCAScript 中的定義(第五版的第 72 頁),簡單的翻譯下:


按運算符結合語句
將舊值轉換為 32 位整型
執行運算符后的語句
轉換之行結果為 32 位整形并返回



從上面可以了解,其實位運算符都能立即返回后面表達式的值。其實其他位運算符都可以達到這樣的目的,例如:
!function() {
    // …
}();


等都可以達到我們的目的。所以其實用“~”也并無其他的原因,僅僅是代碼“看著好看”而已 :^)


效率
與其說三種方式執行匿名函數的效率,到不如直接分析個運算符的執行效率。那么我們對比再來看看“()”以及“void”在 EMCA 規范中的定義

組運算符(第五版 66 頁)

返回表達式的執行結果
void(第五版 70 頁)

按運算符結合語句
執行
返回 undefined
由于組運算符還需要執行語句并返回語句塊返回的值,對比 void 會多個獲取語句塊的操作(雖然消耗不了多少的性能),因此在這種情況下 void 的性能要優于組運算符。

對比兩者,那么 方式三 的性能對比很明顯要低于前兩者。總結起來就是光從語法的角度上分析,在上面三者匿名函數的方式中 方式二 優于 方式一,方式三 的效率最低。



總結
思考下三者之間的優異

方式一的寫法很常見而且很保險,所以并不會有人因為你使用這種方式而責怪你
但使用方式一的同學,可能經常會犯忘記匹配括號的“毛病”(特別是語句塊很長時,就經常搞錯)
使用位運算符執行匿名函數很新潮,用來裝逼酷不錯
很多 IDE (如 IDEA)以及語法高亮工具不支持 方式三 的寫法
void 效率最好,但總感覺相比其他兩種實現方式非常的臃腫(僅僅多幾個字符?)
那么

綜合代碼量以及效率等情況考慮,用 方式一 沒錯的
在需要額外節省代碼的極端情況,用 方式三
考慮效率優先,那么使用 方式二
這里要說明下,其實三種方式效率之間的差異非常小。因此單純拿效率來考慮采用那種方式,幾乎是站不住腳的。

具體采用何種方案,需要根據實際情況來考慮。比如我自己,經常會使用方式三,是因為 1、方便(加一個字符即可) 2、在函數長的情況下匹配括號會很頭暈 3、用起來很酷,但 方式三 會經常讓看我代碼的組員感到困擾。

如果在些類庫等框架性質的基礎代碼,用 方式一 最保險同時大家都容易看懂,是最保險的選擇。



[原文:http://www.gracecode.com/archives/3004/  非常好,大家學習一下。] 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产二三区| 成人短视频在线观看 | 国产亚洲美女精品久久久2020 | 欧美成人午夜一区二区三区 | 少妇的肉体的满足毛片 | 久久久国产精品网站 | 黄色三级三级三级 | 久草成人在线 | 久久精品影视 | 久久91亚洲精品久久91综合 | 日本免费中文字幕 | 天天草天天干天天 | 国产一区二区免费在线观看 | xp123精品视频 | 成人免费福利网站 | 欧美成人视 | 在线成人亚洲 | 亚洲影视中文字幕 | 国产一国产一级毛片视频 | 成人国产精品一区 | 久久线视频 | 一级一片免费看 | 美女视频黄视大全视频免费网址 | 精品国产乱码一区二区三区四区 | 免费在线观看毛片视频 | 视频一区 中文字幕 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 做爰xxxⅹ性护士hd在线 | 娇妻被各种姿势c到高潮小说 | 午夜精品小视频 | 日本aaa一级片 | www.com香蕉| 成人短视频在线播放 | 久久国产乱子伦精品 | 成年人黄视频 | 欧美成人免费电影 | 国产正在播放 | 在线看一区二区三区 | 超碰人人做人人爱 | wankz100%videos| 黄色毛片视频在线观看 |