區(qū)別function
Iife最左邊為(。編譯器認(rèn)為是iife,不是函數(shù)。
IIFE的目的是為了隔離作用域,防止污染全局命名空間
彌補(bǔ)scope的缺陷 用于隔離作用域
全局作用域 塊級(jí)作用域 函數(shù)作用域
只有function才能實(shí)現(xiàn)作用域隔離,因此如果要將一段代碼中的變量、函數(shù)等的定義隔離出來(lái),只能將這段代碼封裝到一個(gè)函數(shù)中。
將代碼封裝到函數(shù)中的目的是為了復(fù)用。在JS中,當(dāng)然聲明函數(shù)的目的在大多數(shù)情況下也是為了復(fù)用,但是JS迫于作用域控制手段的貧乏,我們也經(jīng)常看到只使用一次的函數(shù):這通常的目的是為了隔離作用域了!既然只使用一次,那么立即執(zhí)行好了!
IIFE構(gòu)造單例模式
JS的模塊就是函數(shù),最常見(jiàn)的模塊定義如下:
functionmyModule(){
varsomeThing="123";
varotherThing=[1,2,3];
functiondoSomeThing(){
console.log(someThing);
}
functiondoOtherThing(){
console.log(otherThing);
}
return{
doSomeThing:doSomeThing, doOtherThing:doOtherThing
}
}
varfoo=myModule();
foo.doSomeThing();
foo.doOtherThing();
varfoo1=myModule();
foo1.doSomeThing();
如果需要一個(gè)單例模式的模塊,那么可以利用IIFE:
var myModule=(functionmodule(){
varsomeThing="123";
varotherThing=[1,2,3];
functiondoSomeThing(){
console.log(someThing);
}
functiondoOtherThing(){
console.log(otherThing);
}
return{
doSomeThing:doSomeThing, doOtherThing:doOtherThing
}
})();
myModule.doSomeThing();
myModule.doOtherThing()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/110286.html
摘要:將匿名函數(shù)賦予一個(gè)變量,叫函數(shù)表達(dá)式,這是最常見(jiàn)的函數(shù)表達(dá)式語(yǔ)法形式。組成這是一個(gè)被稱(chēng)為自執(zhí)行匿名函數(shù)的設(shè)計(jì)模式,主要包含兩部分。 一、函數(shù)聲明&函數(shù)表達(dá)式 1.1 函數(shù)聲明 (函數(shù)語(yǔ)句) showImg(https://segmentfault.com/img/bVbbqvT?w=278&h=166); (1)使用 function 關(guān)鍵字聲明一個(gè)函數(shù),再指定一個(gè)函數(shù)名,叫函數(shù)聲明。...
摘要:所以那些匿名函數(shù)附近使用括號(hào)或一些一元運(yùn)算符的慣用法,就是來(lái)引導(dǎo)解析器,指明運(yùn)算符附近是一個(gè)表達(dá)式。 Immediately-invoked Function Expression(IIFE,立即調(diào)用函數(shù)),簡(jiǎn)單的理解就是定義完成函數(shù)之后立即執(zhí)行。因此有時(shí)候也會(huì)被稱(chēng)為自執(zhí)行的匿名函數(shù)(self-executing anonymous function)。 IIFE的叫法最早見(jiàn)于Ben...
區(qū)別functionIife最左邊為(。編譯器認(rèn)為是iife,不是函數(shù)。 IIFE的目的是為了隔離作用域,防止污染全局命名空間 彌補(bǔ)scope的缺陷 用于隔離作用域全局作用域 塊級(jí)作用域 函數(shù)作用域只有function才能實(shí)現(xiàn)作用域隔離,因此如果要將一段代碼中的變量、函數(shù)等的定義隔離出來(lái),只能將這段代碼封裝到一個(gè)函數(shù)中。 將代碼封裝到函數(shù)中的目的是為了復(fù)用。在JS中,當(dāng)然聲明函數(shù)的目的在大多數(shù)情況...
摘要:另外,如果你想跳過(guò)這里,你可以直接跳到立即調(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 也許你沒(méi)有注意到,我是一個(gè)...
閱讀 1808·2021-11-23 09:51
閱讀 1268·2021-11-18 10:02
閱讀 962·2021-10-25 09:44
閱讀 2099·2019-08-26 18:36
閱讀 1619·2019-08-26 12:17
閱讀 1145·2019-08-26 11:59
閱讀 2746·2019-08-23 15:56
閱讀 3350·2019-08-23 15:05