【问题标题】:What's the difference between ( ' ' || false) and (false || ' ' ) in JavaScript? [duplicate]JavaScript 中的 ( ' ' || false) 和 (false || ' ' ) 有什么区别? [复制]
【发布时间】:2021-12-26 14:06:52
【问题描述】:

developer.mozilla 网站上有一些例子展示了逻辑或运算符的不同用法,但这两个例子引起了我的注意,它们是:

o8 = ''    || false      // f || f returns false
o9 = false || ''         // f || f returns ""

为什么这两个,返回不同的结果?我希望它们都返回 false。

【问题讨论】:

  • 来自同一页面:“如果expr1可以转换为true,则返回expr1;否则,返回expr2
  • 布尔运算符使用所谓的“短路”——如果第一个操作数是“真”,则不计算第二个,如果第一个操作数是“假”,则第二个不是评估。但是在第一种情况下,第一个是“假的”,所以它继续到第二个,并返回它。在第二种情况下,它的作用相同
  • 还要注意a - bb - a 可能导致不同的值。 || 运算符规定了评估顺序。
  • 在第一个示例中,'' 被强制转换为要由|| 评估的布尔值,在第二个示例中,它作为字符串返回。
  • @pilchard 第一个表达式中的false 结果是|| 运算符之后的显式false,而不是强制字符串。

标签: javascript logical-operators logical-or


【解决方案1】:

查看同一页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR

expr1 || expr2

如果expr1可以转换为true,则返回expr1;否则,返回expr2

【讨论】:

    【解决方案2】:

    所有变量都是falsy,所以在每次求值过程中,因为第一个操作数(左侧)被合并为一个假值,所以将使用||右侧的操作数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2015-09-18
      • 2011-03-20
      • 2022-01-11
      相关资源
      最近更新 更多