关于编码风格:这个“(function(){});”,括号内的函数,在javascript中是什么意思?

What does this “(function(){});”, a function inside brackets, mean in javascript?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
What does this mean? (function (x,y)){…}){a,b); in JavaScript
What do parentheses surrounding a JavaScript object/function/class declaration mean?

大家好

我不知道以下是什么:

1
2
3
4
(function(){
  // Do something here
  ...
})(someWord) //Why is this here?;

我的问题是:

  • 将函数放在括号内的含义是什么。(function(){});
  • 括号组在函数末尾的作用是什么?
  • 我通常在jquery代码和其他一些javascript库中看到这些。


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

    一个例子:

    1
    2
    3
    (function(name){
      alert(name);
    })('peter')

    这警告"彼得"。

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

    1
    2
    3
    4
    jQuery.noConflict()
    (function($){
      var obj = $('', { id: 'someId' });
    })(jQuery)


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


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

    简单的用法示例:

    1
    2
    3
    4
    5
    6
    7
    8
    function Foo(myval) {
        (function(){
          // Do something here
          alert(arguments[0]);
        })(myval); //pass myval as argument to anonymous function
    }
    ...
    Foo(10);

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


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


    也许这篇文章会对你有所帮助。