函数语句转换为表达式:
+function(){ //it is now function expression
...
}();
但为什么 if语句无法转换为表达式?
+if(true){ //cause an error
....
}
答案 0 :(得分:1)
您未将功能转换为表达式。您正在评估该函数(使用尾随()
),其结果可用于表达式。如果你想要一些东西" if-like"在代码中内联,使用三元运算符:
var a = b + (x > y ? c : d);
这相当于您感兴趣的伪代码:
// Of course the below isn't actually legal...
var a = b + if (x > y) {
c;
} else {
d;
}
答案 1 :(得分:-1)
JavaScript中没有“函数语句”这样的东西。函数定义是返回函数的表达式,而不是与“if
语句”相同意义上的语句。
在函数上使用一元加号正确返回NaN
:
+function () { return "1"; }
NaN
(但如果您调用该函数,就像在您的示例中一样,返回值将在您的表达式中使用:
+function () { return "1"; }()
1
)