日期:2014-05-16  浏览次数:20299 次

匿名函数括号问题
JScript code

(function (a){
return function(){alert(a)}
})(1)


将以上代码写成:
JScript code

function (a){
return function(){alert(a)}
}(1)


是不正确的
但是
JScript code

function c(a,fn){fn()}
c(1,function (a){
return function(){alert(a)}
}(1));


作为参数的那个匿名函数外面的括号加不加都能正常运行,这是为什么呢??

------解决方案--------------------
JScript code
(function (a){
return function(){alert(a)}
})(1)

------解决方案--------------------
()在js中是强制表达式运算

(function (a){
return function(){alert(a)}
})(1)
不用()括着的话,引擎不知道你要强制运算他
其他它等同于
(function (a){
return function(){alert(a)}
}(1))

所以就可以理解function c(a,fn){fn()}
c(1,function (a){
return function(){alert(a)}
}(1));
为什么是正确了