我正在寻找问题的解决方案,我发现了这个问题https://stackoverflow.com/a/6962808/2724978
编写的函数是:
(function loop() {
var rand = Math.round(Math.random() * (3000 - 500)) + 500;
setTimeout(function() {
doSomething();
loop();
}, rand);
}());
我的问题是,为什么函数insite括号在最后还有()?它让我有点困惑,以前从未见过。
答案 0 :(得分:3)
这是Immediately Invoked Function Expression的一个例子。
上面的链接将解释您需要知道的所有内容,但实际上有两件事情正在发生。
()
)可确保表达式的密封范围。答案 1 :(得分:1)
该代码段会创建一个匿名函数,并立即调用它。
没有parens的问题,
// This is a syntax error
function () {
something;
}();
是语法错误;因为语句以' function'开头,解析器需要跟随一个函数名。将它全部包含在parens中使得在那里定义匿名函数在语法上是合法的。
// This is valid syntax
(function () {
something;
}());