是否可以做"如果.. ||如果.."?

时间:2014-03-17 18:55:27

标签: javascript syntax operator-keyword

我有一个关于||的问题javascript中的运算符。根据我的理解,它可以用作'OR'运算符或null合并运算符。

我的问题是,我可以将if语句与||结合使用吗? null合并运算符?例如,

if (x=y){
alert("Yup");
}||if (x=0){
alert("Nope);
}

提前致谢。

1 个答案:

答案 0 :(得分:4)

没有。只需使用else

即可

JavaScript语法区分

之类的语句
if (condition) statement else statement

之类的表达式
expr || expr

语句可以包含通过ExpressionStatement生成限制°的表达式,但表达式只能以非常有限的方式包含语句°°。 / p>

所以

{statement} || {statement}

既不是有效语句也不是有效表达式,因为JavaScript解析器看到||它希望语句出现并报告解析错误。


其次,||并非真正“空合并”。要了解原因,请考虑

alert(false || null)  // alerts "null" not "false"
alert(0     || null)  // alerts "null" not "0"
alert(""    || null)  // alerts "null" not the empty string
alert((0/0) || null)  // alerts "null" not "NaN"

由于||的左侧是falseynull被赋予了首选项,如果只合并了空值,那么这不是您所期望的。


° - { key: value }对象构造函数与块不明确,并且命名函数表达式与函数声明不明确,因此除非有括号,否则它们都被禁止。

° - 像function () { ... }这样的函数表达式可以在其正文中包含语句。