JavaScript自执行函数和Not

3
我找到了这种自执行函数的形式。 "!" 是什么意思?
!function (a) {
    // something
}(1);

我不知道是否存在一个现有的问题。如果这是重复的话,抱歉。

1
看起来和加()的目的一样,是为了防止它被解析成一个函数声明。 - Philip Whitehouse
3个回答

4

使用!运算符会对匿名函数进行求值(从而要求它运行)。如果没有这个操作,你会得到一个错误。

正如其他人所说的那样,如果您正在分配或评估结果,它将反转函数返回的任何结果。


啊,我明白了。我通常使用 (function () {console.log('body');})()。这只是另一种方式,但可以节省一个字符。 - Grace Huang
@Grace-Shao - 是的,情况确实如此。如果你关心函数返回的内容,那么它就更有意义,但是否则使用方式相同。 - Apropos

0

如果它正在返回某些东西,它将只是反转结果:

console.log(!(function(a) { return (a == 1); })(1));

将返回 false,如果您提供 0 或其他任何内容,则返回 true。


0

如果函数的返回值没有被赋值给任何东西,那么not就毫无意义。如果被赋值了,左侧将得到自执行函数结果的not。结果将是显式返回的值或函数中最后计算出的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接