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

Sha*_*aoz 30 javascript scope coding-style anonymous-function javascript-namespaces

可能重复:
这是什么意思?(function(x,y)){...}){a,b); 在JavaScript
中围绕JavaScript对象/函数/类声明的括号是什么意思?

大家好

我不知道以下是什么:

(function(){
  // Do something here
  ...
})(someWord) //Why is this here?;
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 将函数放在括号内是什么意思.ie (function(){});
  2. 括号组在函数末尾的作用是什么?

我通常在jquery代码和其他一些javascript库中看到这些.

pex*_*pex 51

您正在使用特定参数立即调用anonymus函数.

一个例子:

(function(name){
  alert(name);
})('peter')
Run Code Online (Sandbox Code Playgroud)

这警告" 彼得 ".

在jQuery的情况下,您可以jQuery作为参数传递并$在函数中使用.所以你仍然可以在noConflict模式下使用jQuery,但使用方便$:

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


Roc*_*mat 8

您正在创建一个立即调用的函数,并将其someWord作为参数.


Jus*_*ier 7

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


Sha*_*ard 7

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

简单的用法示例:

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


fis*_*000 6

这是一种定义匿名函数然后立即执行它的方法 - 不留下任何痕迹.该功能的范围是真正的本地.()末尾的括号执行函数 - 括号括起来消除正在执行的内容的歧义.