javascript语法解释

javascript syntax explanation

本文关键字:解释 语法 javascript      更新时间:2023-09-26

可能重复:
这是什么意思?(函数(x,y(({…}({a,b(;在JavaScript 中

请任何人解释并举例说明下面的Javascript,我找不到任何解释这一点的文档:

(function([arg, arg ...]) {
    //javascript code here
})([str, str ...]);

我之所以问这个问题,是因为我在谷歌上看到了Facebook的javascript代码,其中大多数都使用这种语法。

它是匿名函数调用

参数值CCD_ 1作为参数CCD_。

它与相同

function foo([arg, arg ...]) {
    //javascript code here
}
foo([str, str, ...]);

现在的情况是,定义了一个匿名函数表达式(在括号中(-

(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')
(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);

但这将通过使函数CCD_ 10对其他所有人可见而再次污染全局命名空间。由于我们不想多次呼叫str, str1,

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

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

使用strs定义的args只调用一次圆括号中的函数。

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

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

一般来说,这是一种很好、安全的编写javascript的方法,例如

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

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