成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript知識(shí)點(diǎn):IIFE - 立即調(diào)用函數(shù)

goji / 2924人閱讀

摘要:所以那些匿名函數(shù)附近使用括號(hào)或一些一元運(yùn)算符的慣用法,就是來引導(dǎo)解析器,指明運(yùn)算符附近是一個(gè)表達(dá)式。

Immediately-invoked Function Expression(IIFE,立即調(diào)用函數(shù)),簡單的理解就是定義完成函數(shù)之后立即執(zhí)行。因此有時(shí)候也會(huì)被稱為“自執(zhí)行的匿名函數(shù)”(self-executing anonymous function)。

IIFE的叫法最早見于Ben Alman的文章。文章中Ben Alman 已經(jīng)解釋得很清楚了,希望定義自執(zhí)行函數(shù)式常見的語法錯(cuò)誤有兩種:

1) function (){ }()

期望是立即調(diào)用一個(gè)匿名函數(shù)表達(dá)式,結(jié)果是進(jìn)行了函數(shù)聲明,函數(shù)聲明必須要有標(biāo)識(shí)符做為函數(shù)名稱。

2) function g(){ }()

期望是立即調(diào)用一個(gè)具名函數(shù)表達(dá)式,結(jié)果是聲明了函數(shù) g。末尾的括號(hào)作為分組運(yùn)算符,必須要提供表達(dá)式做為參數(shù)。
所以那些匿名函數(shù)附近使用括號(hào)或一些一元運(yùn)算符的慣用法,就是來引導(dǎo)解析器,指明運(yùn)算符附近是一個(gè)表達(dá)式。

按照這個(gè)理解,可以舉出五類,超過十幾種的讓匿名函數(shù)表達(dá)式立即調(diào)用的寫法:

1)使用括號(hào)

( function() {}() );
( function() {} )();
[ function() {}() ];

2)使用一元操作符

~ function() {}();
! function() {}();
+ function() {}();
- function() {}();

3)使用void等操作符

delete function() {}();
typeof function() {}();
void function() {}();

4)使用表達(dá)式

var i = function(){ return 10; }();
14.true && function(){ /* code */ }();
15.0, function(){ /* code */ }();
1 ^ function() {}();
1 > function() {}();

5)使用new關(guān)鍵字

new function(){ /* code */ }

31.new function(){ /* code */ }() //如果沒有參數(shù),最后的()就不需要了

但是總體來說,比較常見的是如下三種寫法:

// Crockford"s preference - parens on the inside
(function() {
  console.log("Welcome to the Internet. Please follow me.");
}()); 

(function() {
  console.log("Welcome to the Internet. Please follow me."); 

})(); 

!function() {

  console.log("Welcome to the Internet. Please follow me."); 

}(); 

其實(shí)討論IIFE的多少種寫法多少和研究茴香豆的“茴”字有幾種寫法一樣無聊,但其實(shí)不無用處,至少在閱讀別人的代碼時(shí)見到這樣的寫法不至于不知所云,抑或可以拿出去和小伙伴們裝裝,頓時(shí)覺得逼格提升不少。

參考資料:

http://benalman.com/news/2010/11/immediately-invoked-function-expression/(中文譯文:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html)

http://www.elijahmanor.com/angry-birds-of-javascript-red-bird-iife/(中文譯文:http://nuysoft.com/2013/04/15/angry-birds-of-javascript-red-bird-iife/Immediately-invoked%20Function%20Expression)

http://www.zhihu.com/question/20249179

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78140.html

相關(guān)文章

  • JavaScript-立即調(diào)用函數(shù)表達(dá)式(IIFE

    摘要:將匿名函數(shù)賦予一個(gè)變量,叫函數(shù)表達(dá)式,這是最常見的函數(shù)表達(dá)式語法形式。組成這是一個(gè)被稱為自執(zhí)行匿名函數(shù)的設(shè)計(jì)模式,主要包含兩部分。 一、函數(shù)聲明&函數(shù)表達(dá)式 1.1 函數(shù)聲明 (函數(shù)語句) showImg(https://segmentfault.com/img/bVbbqvT?w=278&h=166); (1)使用 function 關(guān)鍵字聲明一個(gè)函數(shù),再指定一個(gè)函數(shù)名,叫函數(shù)聲明。...

    XUI 評(píng)論0 收藏0
  • [譯] JavaScript立即執(zhí)行函數(shù)表達(dá)式(IIFE

    摘要:而且,如果你想跳過這里,你可以直接跳到立即調(diào)用函數(shù)表達(dá)式進(jìn)行閱讀,但是我建議你讀完整篇文章。當(dāng)圓括號(hào)包裹函數(shù)時(shí),它會(huì)默認(rèn)將函數(shù)作為表達(dá)式去解析,而不是函數(shù)聲明。什么是呢它使一個(gè)被立即調(diào)用的函數(shù)表達(dá)式。一旦命名,函數(shù)將不再匿名。 原文:http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iif...

    546669204 評(píng)論0 收藏0
  • 快速掌握JavaScript面試基礎(chǔ)知識(shí)(二)

    摘要:第一部分請點(diǎn)擊快速掌握面試基礎(chǔ)知識(shí)一閉包閉包由一個(gè)函數(shù)以及該函數(shù)定義是所在的環(huán)境組成。當(dāng)匿名函數(shù)執(zhí)行的時(shí)候,的值為。這個(gè)問題可以改用后面會(huì)介紹方法來解決,通過對每一個(gè)匿名函數(shù)構(gòu)建獨(dú)立的外部作用域來實(shí)現(xiàn)。 譯者按: 總結(jié)了大量JavaScript基本知識(shí)點(diǎn),很有用! 原文: The Definitive JavaScript Handbook for your next develope...

    fyber 評(píng)論0 收藏0
  • 立即執(zhí)行函數(shù)表達(dá)式(IIFE)

    摘要:另外,如果你想跳過這里,你可以直接跳到立即調(diào)用函數(shù)表達(dá)式進(jìn)行閱讀,但是我建議你讀完整篇文章。當(dāng)圓括號(hào)包裹函數(shù)時(shí),它會(huì)默認(rèn)將函數(shù)作為表達(dá)式去解析,而不是函數(shù)聲明。 原文:Immediately-Invoked Function Expression (IIFE) by Ben Alman原譯:立即執(zhí)行函數(shù) by Murphywuwu改增內(nèi)容: by blanu 也許你沒有注意到,我是一個(gè)...

    Yu_Huang 評(píng)論0 收藏0
  • 前端計(jì)劃——JavaScript中關(guān)于setTimeout的那些事

    摘要:需要注意的是,及更早的瀏覽器不支持第一種語法中向延遲函數(shù)傳遞額外參數(shù)的功能。如果在不改變遞歸模式的前提下修善這段代碼解決方案加入定時(shí)器題目四考察和系列解釋立即的對象,是在本輪事件循環(huán)的結(jié)束時(shí),而不是在下一輪事件循環(huán)的開始時(shí)。 前言:setTimeout是JavaScript中常見的一個(gè)window對象方法,本文將介紹關(guān)于它的一些基礎(chǔ)知識(shí)和易出錯(cuò)的地方。 1、基礎(chǔ)知識(shí) 作用:setTim...

    sihai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<