在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)
才会运行吗?为什么这不起作用?
答案 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. ==
会自动转换,但===
不会,使===
在几乎所有情况下都成为更明智的选择。