if语句与函数语句

时间:2014-09-27 19:55:49

标签: javascript

可以使用以下运算符将

函数语句转换为表达式:

+function(){ //it is now function expression 
...
}();

但为什么 if语句无法转换为表达式?

+if(true){ //cause an error
....
}

2 个答案:

答案 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