【发布时间】:2012-12-15 22:25:12
【问题描述】:
我遇到了这种形式的自调用函数。 “!”是干什么用的?
!function (a) {
// something
}(1);
我不知道是否存在现有问题。对不起,如果这是一个重复。
【问题讨论】:
-
看起来与 () 的目的相同,以防止它被解析为函数声明。
标签: javascript self-invoking-function
我遇到了这种形式的自调用函数。 “!”是干什么用的?
!function (a) {
// something
}(1);
我不知道是否存在现有问题。对不起,如果这是一个重复。
【问题讨论】:
标签: javascript self-invoking-function
除非函数的返回值被赋值给某个东西,否则 not 是没有意义的。如果赋值,左边将得到自执行函数结果的非。结果将是显式返回的值或函数中最后计算的值。
【讨论】:
通过使用 !,它正在评估匿名函数(从而要求它运行)。没有它,你会得到一个错误。
而且,正如其他人所说,如果您正在分配或评估它,它将反转函数返回的任何结果。
【讨论】:
如果它返回一些东西,它只会反转结果:
console.log(!(function(a) { return (a == 1); })(1));
将返回 false。如果您给出 0 或其他任何值,则为 true。
【讨论】: