我一直在寻找问题的解决方案,所以发现了这个错误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的示例。
上面的链接将说明您需要了解的所有内容,但实际上发生了两件事。
括号内的换行告诉解析器将其中的所有内容都视为表达式。
之后立即调用表达式(使用()
)可确保该表达式的范围是密封的。