區(qū)別function
Iife最左邊為(。編譯器認(rèn)為是iife,不是函數(shù)。
IIFE的目的是為了隔離作用域,防止污染全局命名空間
彌補(bǔ)scope的缺陷 用于隔離作用域
全局作用域 塊級作用域 函數(shù)作用域
只有function才能實(shí)現(xiàn)作用域隔離,因此如果要將一段代碼中的變量、函數(shù)等的定義隔離出來,只能將這段代碼封裝到一個(gè)函數(shù)中。
將代碼封裝到函數(shù)中的目的是為了復(fù)用。在JS中,當(dāng)然聲明函數(shù)的目的在大多數(shù)情況下也是為了復(fù)用,但是JS迫于作用域控制手段的貧乏,我們也經(jīng)??吹街皇褂靡淮蔚暮瘮?shù):這通常的目的是為了隔離作用域了!既然只使用一次,那么立即執(zhí)行好了!
IIFE構(gòu)造單例模式
JS的模塊就是函數(shù),最常見的模塊定義如下:
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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115001.html
摘要:將匿名函數(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ù)聲明。...
摘要:所以那些匿名函數(shù)附近使用括號或一些一元運(yùn)算符的慣用法,就是來引導(dǎo)解析器,指明運(yùn)算符附近是一個(gè)表達(dá)式。 Immediately-invoked Function Expression(IIFE,立即調(diào)用函數(shù)),簡單的理解就是定義完成函數(shù)之后立即執(zhí)行。因此有時(shí)候也會被稱為自執(zhí)行的匿名函數(shù)(self-executing anonymous function)。 IIFE的叫法最早見于Ben...
區(qū)別functionIife最左邊為(。編譯器認(rèn)為是iife,不是函數(shù)。 IIFE的目的是為了隔離作用域,防止污染全局命名空間 彌補(bǔ)scope的缺陷 用于隔離作用域全局作用域 塊級作用域 函數(shù)作用域只有function才能實(shí)現(xiàn)作用域隔離,因此如果要將一段代碼中的變量、函數(shù)等的定義隔離出來,只能將這段代碼封裝到一個(gè)函數(shù)中。 將代碼封裝到函數(shù)中的目的是為了復(fù)用。在JS中,當(dāng)然聲明函數(shù)的目的在大多數(shù)情況...
摘要:另外,如果你想跳過這里,你可以直接跳到立即調(diào)用函數(shù)表達(dá)式進(jìn)行閱讀,但是我建議你讀完整篇文章。當(dāng)圓括號包裹函數(shù)時(shí),它會默認(rèn)將函數(shù)作為表達(dá)式去解析,而不是函數(shù)聲明。 原文:Immediately-Invoked Function Expression (IIFE) by Ben Alman原譯:立即執(zhí)行函數(shù) by Murphywuwu改增內(nèi)容: by blanu 也許你沒有注意到,我是一個(gè)...
閱讀 1872·2023-04-26 01:58
閱讀 1994·2019-08-30 11:26
閱讀 2737·2019-08-29 12:51
閱讀 3505·2019-08-29 11:11
閱讀 1192·2019-08-26 11:54
閱讀 2106·2019-08-26 11:48
閱讀 3489·2019-08-26 10:23
閱讀 2391·2019-08-23 18:30