区别function
Iife最左边为(。编译器认为是iife,不是函数。
IIFE的目的是为了隔离作用域,防止污染全局命名空间
弥补scope的缺陷 用于隔离作用域
全局作用域 块级作用域 函数作用域
只有function才能实现作用域隔离,因此如果要将一段代码中的变量、函数等的定义隔离出来,只能将这段代码封装到一个函数中。
将代码封装到函数中的目的是为了复用。在JS中,当然声明函数的目的在大多数情况下也是为了复用,但是JS迫于作用域控制手段的贫乏,我们也经常看到只使用一次的函数:这通常的目的是为了隔离作用域了!既然只使用一次,那么立即执行好了!
IIFE构造单例模式
JS的模块就是函数,最常见的模块定义如下:
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();
如果需要一个单例模式的模块,那么可以利用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()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/110286.html
摘要:将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。组成这是一个被称为自执行匿名函数的设计模式,主要包含两部分。 一、函数声明&函数表达式 1.1 函数声明 (函数语句) showImg(https://segmentfault.com/img/bVbbqvT?w=278&h=166); (1)使用 function 关键字声明一个函数,再指定一个函数名,叫函数声明。...
摘要:所以那些匿名函数附近使用括号或一些一元运算符的惯用法,就是来引导解析器,指明运算符附近是一个表达式。 Immediately-invoked Function Expression(IIFE,立即调用函数),简单的理解就是定义完成函数之后立即执行。因此有时候也会被称为自执行的匿名函数(self-executing anonymous function)。 IIFE的叫法最早见于Ben...
区别functionIife最左边为(。编译器认为是iife,不是函数。 IIFE的目的是为了隔离作用域,防止污染全局命名空间 弥补scope的缺陷 用于隔离作用域全局作用域 块级作用域 函数作用域只有function才能实现作用域隔离,因此如果要将一段代码中的变量、函数等的定义隔离出来,只能将这段代码封装到一个函数中。 将代码封装到函数中的目的是为了复用。在JS中,当然声明函数的目的在大多数情况...
摘要:另外,如果你想跳过这里,你可以直接跳到立即调用函数表达式进行阅读,但是我建议你读完整篇文章。当圆括号包裹函数时,它会默认将函数作为表达式去解析,而不是函数声明。 原文:Immediately-Invoked Function Expression (IIFE) by Ben Alman原译:立即执行函数 by Murphywuwu改增内容: by blanu 也许你没有注意到,我是一个...
阅读 1806·2021-11-23 09:51
阅读 1265·2021-11-18 10:02
阅读 961·2021-10-25 09:44
阅读 2098·2019-08-26 18:36
阅读 1618·2019-08-26 12:17
阅读 1144·2019-08-26 11:59
阅读 2746·2019-08-23 15:56
阅读 3349·2019-08-23 15:05