这个"(function(){});",在JavaScript中括号内的函数是什么意思?

37

1
这里有同样的问题:https://dev59.com/Um865IYBdhLWcg3wOb9h#3921997 - DoXicK
5个回答

57

您正在立即调用一个具有特定参数的匿名函数。

一个例子:

(function(name){
  alert(name);
})('peter')

这会弹出 "peter"。

在 jQuery 中,您可以将 jQuery 作为参数传递并在函数中使用 $。因此,您仍然可以在 noConflict 模式下使用 jQuery,但使用方便的 $

jQuery.noConflict()
(function($){
  var obj = $('<div/>', { id: 'someId' });
})(jQuery)

谢谢您的回复,现在我明白了。 - Shaoz
这个函数可以被命名吗?还是必须是匿名的? - Finlay Percy

11

您正在创建一个立即调用的函数,使用someWord作为参数。


1
哇,这是最精辟的答案,我明白了。谢谢。 - Shaoz

7

它用于创建匿名函数(没有名称的函数,可以“嵌套”在其他函数中),并将参数传递给该函数。 someWord作为参数传递,函数可以使用关键字"arguments"读取它。

使用的简单示例:

function Foo(myval) {
    (function(){
      // Do something here
      alert(arguments[0]);
    })(myval); //pass myval as argument to anonymous function
}
...
Foo(10);

7

这是一种定义匿名函数并立即执行的方法——就像不留痕迹一样。该函数的作用域是真正的本地作用域。末尾的()括号执行该函数,而外层括号则是为了消除歧义。


7

基本上,这让您声明一个匿名函数,然后通过将其括在括号中并编写 (someWord) 来运行该函数。您可以将其视为声明对象,然后立即实例化该对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接