我一直在寻找问题的解决方案,所以发现了这个错误https://stackoverflow.com/a/6962808/2724978

编写的函数为:

(function loop() {
    var rand = Math.round(Math.random() * (3000 - 500)) + 500;
    setTimeout(function() {
            doSomething();
            loop();
    }, rand);
}());


我的问题是,为什么现场括号内也要有()?这让我有些困惑,以前从未见过。

最佳答案

这是Immediately Invoked Function Expression的示例。

上面的链接将说明您需要了解的所有内容,但实际上发生了两件事。


括号内的换行告诉解析器将其中的所有内容都视为表达式。
之后立即调用表达式(使用())可确保该表达式的范围是密封的。

09-13 02:16