【问题标题】:Javascript: false || undefined vs undefined || falseJavascript: 假 ||未定义与未定义 ||错误的
【发布时间】:2014-02-17 12:38:33
【问题描述】:

“||”行为的解释是什么运算符(逻辑或),当在 JavaScript 中与 falseundefined 一起使用时?

1)

> false || undefined
undefined

2)

> undefined || false
false

【问题讨论】:

标签: javascript undefined logical-operators


【解决方案1】:

逻辑OR 运算符不像+* 等那样可交换。它返回第一个可以转换为true 的表达式。 (来源Mozilla Doc

  1. false || undefined中,false不能按定义转换为true(因为正好相反),所以返回第二个操作数(undefined

  2. 1234563 p>

【讨论】:

  • 抱歉,您的第二个语句中是否有错字,或者我没有理解,并且存在undefined || false 返回undefined 的情况? (原本应该返回false
  • 确实如此。我猜我在写作时混合了我的想法。我已经解决了这个问题。
【解决方案2】:

根据Logical Operators in Mozilla Docs

逻辑或 (||)

expr1 || expr2

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

1) 如果false || undefined: false(expr1) 不能转换成true,所以返回undefined(expr2)

2) 万一undefined || false: undefined(expr1) 不能转换成true,所以 false(expr2) 返回

【讨论】:

    【解决方案3】:

    这个问题与falseundefined 无关,而是与Javascript 中的Falsy Values 中的任何一个相关。请注意,Javascript 中一共有六个 falsy 值:

    • 错误。
    • 0(零)
    • '' 或 ""(空字符串)
    • 未定义
    • NaN

    当你在两个 Falsy 值之间运行逻辑或运算时,比如 JS 中的<left value> || <right value>,它总是返回 OR 运算符右侧的值。原因是 OR 运算符,根据其在ECMAScript Engines 中的实现,如果可以强制转换为true,通常会返回左值。但是,如果不能将运算符左侧的值强制为 true,则无论右侧的值是什么,都始终返回正确的值,而不是像预期的那样被强制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-11
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      相关资源
      最近更新 更多