自执行匿名函数中(fn ...)()括号的用途? [JavaScript的]

时间:2010-10-06 18:51:59

标签: javascript anonymous-function

  

可能重复:
  Location of parenthesis for auto-executing anonymous JavaScript functions?

问题是重复的 Location of parenthesis for auto-executing anonymous JavaScript functions?What do parentheses surrounding a object/function/class declaration mean?

真的很好奇,这段代码中括号的用途是什么:

(function() {})();

这看起来像我一样容易写:

var x=function(){};
(x)();

使用jQuery插件我们会做类似......

(function($) {})(jQuery);

括号有什么用处?

2 个答案:

答案 0 :(得分:2)

使用括号(围绕函数),您不必声明名称,乱丢命名空间。并且,它们用于提醒读者您的代码,因为您正在使用自我调用函数。

第二组括号实际上调用/调用刚刚创建的(匿名)函数。由于Javascript函数实际上只是变量(或CS语言中的“第一类对象”),因此您刚刚创建了一个变量(在第一组括号中),您可以使用第二组调用它。

以下是一个例子:

function callFunc(f) {
    return f("test");
}

callFunc(alert);

在示例中,f实际引用了函数alert,您可以在函数代码中使用括号调用它。

答案 1 :(得分:1)

在jQuery示例的情况下,您定义了一个匿名函数,该函数接受一个名为$的参数,然后将jQuery对象传递给它。它将保留在该范围内,而不会与具有全局定义的其他框架发生冲突。

除此之外,个人看起来更清洁。