【问题标题】:Is it possible to do "if .. || if .."?是否可以做“如果.. || 如果..”?
【发布时间】:2014-03-17 18:55:26
【问题描述】:

我有一个关于 || 的问题JavaScript 中的运算符。据我了解,它可以用作“或”运算符或空合并运算符。

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

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

提前致谢。

【问题讨论】:

  • 不,但你可以使用else if
  • ||不是“空合并”运算符。它是一个惰性求值的布尔或运算符。 (无论如何,语句 - 例如if - 不能用作表达式。)

标签: javascript syntax operator-keyword


【解决方案1】:

没有。只需使用else

JavaScript 语法区分语句,如

if (condition) statement else statement

和类似的表达式

expr || expr

通过ExpressionStatement产生式,语句可以包含限制较少的表达式°,但表达式只能以非常有限的方式包含语句°°

所以

{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"

由于|| 的左侧是falsey,因此null 具有优先权,如果只合并空值,这将不是您所期望的。


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2020-07-21
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多