【问题标题】:JavaScript Self Invoking function with Not带有 Not 的 JavaScript 自调用函数
【发布时间】:2012-12-15 22:25:12
【问题描述】:

我遇到了这种形式的自调用函数。 “!”是干什么用的?

!function (a) {
    // something
}(1);

我不知道是否存在现有问题。对不起,如果这是一个重复。

【问题讨论】:

  • 看起来与 () 的目的相同,以防止它被解析为函数声明。

标签: javascript self-invoking-function


【解决方案1】:

除非函数的返回值被赋值给某个东西,否则 not 是没有意义的。如果赋值,左边将得到自执行函数结果的非。结果将是显式返回的值或函数中最后计算的值。

【讨论】:

    【解决方案2】:

    通过使用 !,它正在评估匿名函数(从而要求它运行)。没有它,你会得到一个错误。

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

    【讨论】:

    • 啊,我明白了。我通常使用 (function () {console.log('body');})()。这只是执行此操作的另一种方式,但会节省 1 个字符。
    • @Grace-Shao - 是的,确实如此。如果您关心函数返回的内容,则它具有更大的意义,否则使用相同。
    【解决方案3】:

    如果它返回一些东西,它只会反转结果:

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

    将返回 false。如果您给出 0 或其他任何值,则为 true。

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2016-11-29
      相关资源
      最近更新 更多