有没有理由编写一个IIFE,用前导'不是'-JavaScript中的运算符(!)
Is there a reason to write an IIFE invoked with a leading 'not'-operator (!) in JavaScript?
有两种(常见的)方法可以用Javascript实现IIFE。
// Way 1
(function(){
/* My IIFE Body*/
})()
//Way 2
!function(){
/* My IIFE Body*/
}()
我想知道是否有充分的理由使用第二个
我只看到不使用第二个的原因。例如,如果你想让IIFE返回一些东西,你就不能把它分配给这样的变量:
var x =
(function()
{ return 5; })(); // x will be 5
var y =
!function()
{ return 5; }(); // y will be true
因为它将被强制转换为布尔值。每当我想从Way-2-IIFE访问对象时,我都会使用一个类似于fiddle的闭包
正如您在这里看到的,第二个变体也没有性能提升。
那么,使用方法二有什么好的理由吗?如果是,你能给我举个例子吗?
人们使用第二种方法,因为它节省了一个字节(!
与(
和)
)。
相关文章:
- 调用$mdDialog(Angular Material)Confirmation而不是Default Javascri
- jquery错误类型错误:值不是对象..split(& # 39; & # 39;)
- TypeError: a不是Object.(在a'中计算'& #39;
- & # 39; & # 39; x # 39; & # 39;不是一个函数
- 参数& # 39;DemoController& # 39;不是函数,没有定义
- 淡出/淡出使DIV's堆叠而不是重叠?使用& # 39;绝对# 39;这不是一个解决方案
- Obout.Interface.OboutTextBox& # 39;是null或不是对象错误
- & # 39;观察# 39;on 'MutationObserver':参数1不是类型'Node
- 参数& # 39;fn # 39;不是一个函数,得到Object angularjs [ng:areq]
- & # 39; functionInBackboneView& # 39;在Jquery中不是一个函数上下文
- TypeError: & # 39;未定义# 39;不是一个函数(计算'angular.element(wind
- TypeError: & # 39; MyClass.MyFunction不是函数'ES6 / node4的错误
- 参数& # 39;d3Ctrl& # 39;不是函数,没有定义
- 为什么jQuery $('#form').submit();作品完美但不是美元(& # 39;#形式#
- & # 39; ScrollTop& # 39;为空或不是对象
- 是( s{2,} /)和(/ s{2 & # 39; & # 39;} /)是一样的吗?如果不是,请解释其中的区别
- & # 39; __e3_& # 39;是空或不是对象-谷歌地图
- setRequestHeader'& # 39; xmlhttprequest # 39;(. .不是一个有效的
- 使用jqtransform出错.& # 39;抵消().top& # 39;为空或不是对象.& lt; select>是
- 为什么& # 39;这个# 39;指'window'而不是类实例