关于js语法的小问题

时间:2010-12-04 22:27:59

标签: javascript syntax

我多次看到这种语法,但我找不到合适的谷歌方法,我希望我能在这里得到一些帮助:

  <script>
    (function(){
      //code goes here
    })();
  </script>

为什么函数关键字包含在括号中?它做了什么以及这叫做什么?

4 个答案:

答案 0 :(得分:5)

在js中,语法为:

function() { //code }

定义了一个匿名函数。您可以将其存储到变量中并调用它:

var a = function() { //code };
a();

或者如果您不想打扰它,可以一步完成。

(function() { //code })();

括号是必要的,因为:

function() { //code }();

语法不正确。

此语法在某些情况下非常有用,可帮助进行内存管理以及更改变量名称。例如,在javascript中,您有jQuery个对象,但大多数人将其称为$。但有时$被用作其他变量而不是jQuery对象。要解决此问题,您可以将代码包装在:

(function($) { // code that uses $ })(jQuery);

这样你可以使用美元符号而不必担心它是否实际指向jQuery对象。

答案 1 :(得分:5)

它被称为即时调用的匿名函数。

// defining and calling a named function
function x() { /* do something */ }
x();

// defining an anonymous function (usually to assign it to a variable)
var x = function () { /* do something */ };
x();

// defining and calling an anonymous function in one step 
(function () { /* do something */ })();

大多数情况下,最后一个模式用作创建闭包的一部分。

答案 2 :(得分:2)

你可以google(或搜索Stack Overflow)JavaScript anonymous functionclosure

一些链接:

答案 3 :(得分:1)

请参阅Bob Fincheimers的答案,解释其含义。

它用于包装程序员不希望从外部看到的一堆函数和变量 - 当你使用库时这很好,你不希望它们阻塞许多函数名内部的东西。