5 回答
TA贡献1780条经验 获得超4个赞
谢谢各位的认真解答,综合各位的答案,(function(){})
中括号就是括号,它的作用是让浏览器把()
里的内容当做表达式去解析,如果不用括号包起来的话,浏览器就会把function(){}
当做是函数声明,但是函数声明没有名字,于是就会报错。
提到下面这几种方法也可达到立即执行函数的效果:
+function(name){console.log(name)}("123")
-function(name){console.log(name)}("123")
!function(name){console.log(name)}("123")
0 || function(name){console.log(name)}("123")
其中的+,-,!,0||等的作用应该也是让浏览器把function(){}当成表达式,而不是函数声明去处理。
再次感谢!
TA贡献1797条经验 获得超6个赞
(function fun(a,b,c)
{
//…
})(1,2,3)
这里的括号(1,2,3)中的参数对应的是前面函数的参数,当第一个括号的代码符合表达式规则时,前面的代码会被作为函数表达式来执行,所以最好在第一个函数表达式前面加上“;”分隔开,否则会报前一个表达式的值不是函数的错误。
如:alert(1)(function(){})(),此时alert(1)先执行,由于符合立即执行的函数表达式规则,所以alert(1)的返回值会被作为函数,同时将后一个括号中的值作为参数传入,但alert(1)返回的是undefined,所以会报错。解决办法就是在alert(1)后面加上“;”或者“,”,将其拆分为两个表达式。
立即执行还可以用
(function fun(a,b,c)
{
//…
}(1,2,3))
!function fun(a,b,c)
{
//…
}(1,2,3)
void function fun(a,b,c)
{
//…
}(1,2,3)
TA贡献1845条经验 获得超8个赞
调用运算符:跟在任何产生一个函数值的表达式之后的一对圆括号()
表达式内可包含零个或多个用逗号隔开的表达式。 每个表达式产生一个参数值
在 《JavaScript 语言精粹》里面,表示每个函数在创建时会附加两个隐藏属性,函数的上下文和实现函数行为的代码(JavaScript创建一个函数对象时,会给给对象设置一个“调用”属性)。当JavaScript调用一个函数时,可以理解为调用此函数的“调用”属性。 可以跟上面的 () 联系在一起。
添加回答
举报