为什么基于短路评估的if语句不起作用?

时间:2012-05-15 20:48:09

标签: javascript

fun函数中,如果布尔表达式为真,我想返回1。

function fun() {
    (1 == 1) && return 1;
}

alert(fun());

当然,我可以使用if (1 == 1) return 1轻松完成此操作。但是,我想知道为什么上面的代码不起作用。它会在Chrome控制台中触发“Uncaught SyntaxError:Unexpected token return”错误。

如果return 1为真,那么(1 == 1)才会运行吗?为什么这不起作用?

3 个答案:

答案 0 :(得分:8)

它不起作用,因为&&运算符需要expressions两个操作数。如,

  

expr1&&表达式2

但是,

return语句不是(从语法上讲)expressions

答案 1 :(得分:2)

要获得一个很棒的解释,请参阅jmar777的答案,无论如何,您都可以在这里实现自己的计划。我只是反过来说:

function fun() {
    return null || 1 == 1;
}

alert(fun());

答案 2 :(得分:1)

JavaScript不是bash shell脚本。你没有if。 JavaScript也不是C. ==会自动转换,但===不会,使===在几乎所有情况下都成为更明智的选择。