javascript语法解释

时间:2011-10-14 08:05:11

标签: javascript

  

可能重复:
  What does this mean? (function (x,y)){…}){a,b); in JavaScript

请任何人解释并举例说明下面的Javascript,我找不到任何解释此问题的文件:

(function([arg, arg ...]) {

    //javascript code here

})([str, str ...]);

我问的是这个问题,因为我在Google中也看到了Facebook javascript代码,其中大部分使用了这种语法。

4 个答案:

答案 0 :(得分:4)

这是匿名函数调用

参数值str, str作为参数arg, arg传递给函数,然后执行javascript代码。

相同
function foo([arg, arg ...]) {
    //javascript code here
}

foo([str, str, ...]);

答案 1 :(得分:3)

发生了什么,定义了匿名函数表达式(在括号中) -

(function([arg, arg ...]) {

    //javascript code here

})

然后使用函数末尾的()立即调用该函数,就像调用普通函数var result = someFunction()一样。所以,例如 -

(function() {
    alert('Called by "()" at end of function');
})()

您还可以通过括号 -

将参数传递给anoymous函数
(function(username) {
    alert('Called by "()" at end of function. Hello ' + username + '!');
})('Dave')

答案 2 :(得分:1)

圆括号中的函数只用strs。

定义的args调用一次

包含该函数的圆括号用于限制函数的范围,即函数不能在外部调用。

str变量可以是全局变量(例如jQuery),并且可以通过相应的arg(例如jQuery - > $)进行别名,仅供该函数使用。

通常,这是编写javascript的一种安全的好方法,例如

(function($) {
   // code
})(jQuery)

对于函数,局部变量'$'表示全局变量'jQuery'。您可以将“$”定义为另一个脚本(或函数)中的其他内容,并且该变量不会影响此函数中的“$”。

答案 3 :(得分:1)

(function(a, b) {
  var x;
})

返回一个匿名函数。由于技术/历史原因,匿名函数必须用括号括起来。

值得注意的是,外部代码无法看到名称abx。相反,只需编写var x;就可以使x可访问,从而污染全局命名空间。这相当于经典面向对象语言中的私有变量。

我们也可以写:

var func = function(a, b) {var x;};
// or equivalently:
function foo(a, b) {var x;};

func('arg1', 2);

但是,通过使其他人可以看到函数func,这将再次污染全局命名空间。由于我们不想再多次调用func

(function(a, b) {var x;}) ('arg1', 2);

是使用变量执行代码的完美方式,而不会使这些变量(或任何变量名称)对世界其他地方可见。