我已经看到在函数的大括号后立即使用括号的Javascript代码,我无法理解它们的用途。

例:

function foo(bar){
  return bar;
}(0);
  • (0)是做什么的?
  • 这叫什么?
  • 什么时候应使用此技术?
  • 最佳答案

    在您的示例中,您仅具有两个语句,它等效于:

    function foo(bar){
      return bar;
    }
    0;
    

    这是而不是一种自调用功能。第一条语句是函数声明,第二条语句只是数字文字0,它不执行任何操作。括号不执行该函数,它们是grouping operator

    我们如何证明这一点?尝试:
    function foo(bar){
      return "bar";
    }(0);
    

    告诉我输出是什么

    如果我们有一个函数表达式,它将是一个自调用函数。为此,您可以使用分组运算符强制将其评估为表达式。

    例如:
    (function foo(bar){
      return bar;
    })(0);
    

    这是一个命名函数表达式。表达式((function ....))的结果是一个函数引用,(0)执行该函数,并将0作为参数传递。

    括号的位置也可以是:
    (function foo(bar){
      return bar;
    }(0));
    

    也许这就是您所看到的。

    此技术已在此处进行了广泛讨论:What is the purpose of a self executing function in javascript?

    关于javascript - 花括号后的括号是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11136217/

    10-16 13:02