什么 (function (x,y){...})(a,b); 在 JavaScript 中是什么意思?

IT技术 javascript
2021-01-21 11:08:22

我看到了这个功能:

(function (x, y, data, lbl, dot) {
    // Function body...
})(x, y, data[i], labels[i], dot);

这是什么?一个函数?为什么要在 中放置函数定义()

6个回答

在javascript中,您可以拥有anonymousself invoking功能。

function add(a, b)
{
   return a + b;
}

var add = function (a, b) {
             return a + b;
          }

你把这些称为

add(10, 20)

您可以定义该函数并立即调用它

(
   function(a, b)
   {
      return a + b;
   }
)(10, 20);

   (
       function(a, b)
       {
          return a + b;
       }
    )

part 定义了一个函数,(10, 20)紧接着它调用刚刚定义的函数,用 10 和 20 作为它的参数。

由于该函数没有名称,所以后面的代码中不能使用它。

您问题中的代码可能是minified,并以类似的方式创建一个函数并立即调用它。

为什么我创建匿名函数(不再使用它)并在定义后立即调用它?- 相反,我可以(在本例中)返回 10 + 20。并且不定义函数以具有 a + b 的逻辑,然后仅为 10,20 调用它?
2021-03-21 11:08:22
@MuhammadUmer 是的,区别在于名称。function x{} ();创建一个函数x并立即调用它。但它也可以使用名称再次调用:x();但是(function(){})();创建了一个匿名函数,调用它之后就不能再使用该函数了。
2021-03-25 11:08:22
是的,我支持这个。为什么要在 IIFE 中争论?人们可以将值硬编码到那里。
2021-03-29 11:08:22
我不明白....为什么函数不是这样创建的:::::: function () {} (); ....为什么像 (function(){})(); 它只是匿名的,这意味着没有正确的名字......我知道分号在这里起着作用......如果可以请解释一下。
2021-04-06 11:08:22

function() {}是一个匿名函数的定义(function() {})()是匿名函数的调用。

这是有效的,因为函数可以像数据一样传递。所以window.alert是已知alert函数本身window.alert()会调用该函数。

这种技术通常用于保持当前变量范围干净,因为函​​数有自己的变量范围。

+1 提及范围是使用该技术的原因
2021-03-28 11:08:22
function() {} 在 Chrome 中引发错误:“意外的 '('”。
2021-04-02 11:08:22

它是一个自匿名调用函数。该函数被定义并立即执行。包装函数的括号确保它被视为函数表达式而不是函数声明最后一对括号调用函数并传递参数。

自执行匿名函数将是一个非常准确的描述。

它是一个自调用函数,它会立即执行。自调用函数对于避免创建全局变量非常有效,jQuery 非常有效地使用了这一点。