javascript语法解释
可能重复:javascript语法解释,javascript,Javascript,可能重复: 请任何人在下面解释并给出有关Javascript的示例,我找不到任何文档对此进行解释: (function([arg, arg ...]) { //javascript code here })([str, str ...]); 我问这个问题是因为我在谷歌的Facebook javascript代码中也看到了,大多数代码都使用这种语法。这是匿名函数调用 参数值str,str作为参数arg,arg传递给函数,然后执行javascript代码 这和 function fo
请任何人在下面解释并给出有关Javascript的示例,我找不到任何文档对此进行解释:
(function([arg, arg ...]) {
//javascript code here
})([str, str ...]);
我问这个问题是因为我在谷歌的Facebook javascript代码中也看到了,大多数代码都使用这种语法。这是匿名函数调用 参数值
str,str
作为参数arg,arg
传递给函数,然后执行javascript代码
这和
function foo([arg, arg ...]) {
//javascript code here
}
foo([str, str, ...]);
它是匿名函数调用 参数值
str,str
作为参数arg,arg
传递给函数,然后执行javascript代码
这和
function foo([arg, arg ...]) {
//javascript code here
}
foo([str, str, ...]);
现在的情况是,定义了一个匿名函数表达式(在括号中)- 然后在函数末尾使用
()
立即调用该函数,就像调用普通函数var result=someFunction()
一样。因此,例如-
(function() {
alert('Called by "()" at end of function');
})()
您还可以通过括号将参数传递给anoymous函数-
(function(username) {
alert('Called by "()" at end of function. Hello ' + username + '!');
})('Dave')
现在的情况是,定义了一个匿名函数表达式(在括号中)- 然后在函数末尾使用
()
立即调用该函数,就像调用普通函数var result=someFunction()
一样。因此,例如-
(function() {
alert('Called by "()" at end of function');
})()
您还可以通过括号将参数传递给anoymous函数-
(function(username) {
alert('Called by "()" at end of function. Hello ' + username + '!');
})('Dave')
圆括号中的函数仅用strs定义的参数调用一次
包含函数的圆括号用于限制函数的范围,即不能从外部调用函数 str变量可以是全局变量(例如jQuery),并且可以通过其相应的arg(例如jQuery->$)进行别名,以仅用于函数 一般来说,这是编写javascript的一种好的、安全的方法
(function($) {
// code
})(jQuery)
对于函数,局部变量“$”表示全局变量“jQuery”。这意味着您可以在另一个脚本(或函数)中将“$”定义为其他内容,并且该变量不会影响此函数中的“$”。圆括号中的函数仅用strs定义的参数调用一次
(function(a, b) {
var x;
})
包含函数的圆括号用于限制函数的范围,即不能从外部调用函数 str变量可以是全局变量(例如jQuery),并且可以通过其相应的arg(例如jQuery->$)进行别名,以仅用于函数 一般来说,这是编写javascript的一种好的、安全的方法
(function($) {
// code
})(jQuery)
对于函数,局部变量“$”表示全局变量“jQuery”。这意味着您可以在另一个脚本(或函数)中将“$”定义为其他内容,并且该变量不会影响此函数中的“$”
(function(a, b) {
var x;
})
返回一个匿名函数。出于技术/历史原因,匿名函数必须用括号括起来
值得注意的是,外部代码看不到名称a
、b
和x
。相反,只写varx
将使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);
是使用变量执行代码的完美方式,而无需使这些变量(或任何变量名)对世界其他地方可见
返回一个匿名函数。出于技术/历史原因,匿名函数必须用括号括起来
值得注意的是,外部代码看不到名称a
、b
和x
。相反,只写varx
将使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);
是使用变量执行代码的完美方式,而不必让世界其他地方看到这些变量(或任何变量名)。搜索javascript闭包。哦,好吧,我会试试,谢谢戈米:)我怀疑搜索闭包会有多大帮助。这种模式被一些人称为一种模式。其他人也有类似的名字。它可以用来创建闭包,但不需要创建闭包,也不是唯一的方法。搜索javascript闭包。哦,好吧,我会试试,谢谢戈米:)我怀疑搜索闭包会有多大帮助。这种模式被一些人称为一种模式。其他人也有类似的名字。它可以用来创建闭包,但不必创建闭包,也不是唯一的方法。包含函数的圆括号不是范围运算符。它们允许立即调用函数。如果它们不在那里,就会出现语法错误。啊,说得好-谢谢。尽管如此,我认为函数不能在外部调用(因为它是匿名的)的观点仍然成立。包含函数的圆括号不是作用域运算符。它们允许立即调用函数。如果它们不在那里,就会出现语法错误。啊,说得好-谢谢。尽管如此,我认为该函数不能在外部调用(因为它是匿名的)的观点仍然成立。您文章顶部的表达式是一个没有名称的函数声明,因此这是一个语法错误。给定一个名称使其在语法上合法,它没有返回语句,因此返回未定义的
,
,而不是函数。@RobG谢谢。固定:用括号括起来,使其具有语法性