除了在javascript中创建自调用块之外,()还做了什么?

时间:2017-07-19 11:57:45

标签: javascript

我只是在

中看到过这种情况
(function () {
    // more code...
})()

基本上它可以防止代码在加载第一个()和第二个()之间的整个代码块之前执行,因此我们可以调用第一个{{1}内的函数1}}。

()还有其他用途吗?

1 个答案:

答案 0 :(得分:0)

我不知道你在问什么。 ()调用没有参数的函数。

(function () {
  console.log('Hi, I\'m in the function.');
})();

与:

相同
function test () {
  console.log('Hi, I\'m in the function.');
}
test(); // call the function without any arguments

第一个片段演示了一个IIFE(立即调用函数表达式),用于创建新范围。在IIFE内宣布的变量在IIFE之外是不可见的。

这是你有空()的唯一情况。当然,如果()不为空,则它们可用作分组运算符:(3 + 4) * 5

此分组运算符也用于上面的IIFE示例:函数包含在()中,表示function关键字未启动函数声明(这需要名称),但函数表达式,不需要名称。以下将导致语法错误:

function () {
  console.log('Hi, I\'m in the function.');
}(); // SyntaxError: function statement requires a name

那是因为解析器看到function并认为它是一个函数声明。为了告诉解析器它是一个函数表达式,我们可以使用只能与表达式一起使用的运算符:

  • (function () {})()
  • +function () {}()
  • -function () {}()
  • ~function () {}()