javascript - 为什么这个 javascript 函数在括号内?

标签 javascript scope

我正在寻找问题的解决方案,我发现了这个答案 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 的例子.

上面的链接将解释您需要了解的所有内容,但本质上有两件事正在发生。

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

关于javascript - 为什么这个 javascript 函数在括号内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795523/

相关文章:

javascript - 如何在状态路由内的状态更改angularjs上动态更改pageTitle

javascript - 获取请求返回状态 cors 和可读流

javascript - 使用 lodash 的数组内部数组联合

javascript - jQuery 选择链接包含一个 url

javascript - 在循环之后访问 for 循环计数器是否安全?

javascript - 函数中的变量范围

javascript - 尝试使用函数在 javascript 中添加三个数字,但它没有添加它们,而是只是将它们写为一个数字

javascript:从结构中函数的范围访问结构中的父对象

c - 在 main 中使用 malloc 但访问 main 之外

javascript - AngularJS 事件处理程序不触发