有没有理由编写一个IIFE,用前导'不是'-JavaScript中的运算符(!)

Is there a reason to write an IIFE invoked with a leading 'not'-operator (!) in JavaScript?

本文关键字:不是 #39-JavaScript 运算符 有理由 IIFE 一个      更新时间:2023-09-26



有两种(常见的)方法可以用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的闭包

正如您在这里看到的,第二个变体也没有性能提升。

那么,使用方法二有什么好的理由吗?如果是,你能给我举个例子吗?

人们使用第二种方法,因为它节省了一个字节(!())。