【问题标题】:Unusual behaviour with booleans in javascript [duplicate]javascript中布尔值的异常行为[重复]
【发布时间】:2020-05-26 15:59:07
【问题描述】:

在 javascript 中使用布尔值时,我注意到一个不确定性:

"false" && true  //this gives output true
false && true //this gives output false

我可以解释一下这种行为吗?

【问题讨论】:

  • "false" 是一个非空字符串,它是真值。

标签: javascript boolean bitwise-and


【解决方案1】:

这并没有什么不寻常的地方。 && 运算符是短路逻辑与。两个条件都需要为true,整个表达式为true,如果任一条件为false,则整个操作为false,其余条件不进行测试。

在第一个示例中,"false" 不是布尔值false,而是字符串"false",它是一个有效的“某物”或"truthy" 值,因此它的计算结果为true

console.log("false" && true);  //this gives output true

在第二个示例中,使用了实际的布尔值false,这(如前所述)导致整个操作为假。

console.log(false && true); //this gives output false

【讨论】:

    【解决方案2】:

    因为空字符串以外的字符串是真值,这就是第一个表达式解析为真的原因

    【讨论】:

      【解决方案3】:

      JavaScript 中的非空/未定义/空字符串是 true 用于布尔逻辑目的。在第二种情况下,false && true 是逻辑错误

      【讨论】:

        【解决方案4】:

        因为"false" 不是布尔值,而是字符串。无论该字符串包含什么文本以及人类如何直观地解释该文本的含义,它都是一个与其他字符串一样的字符串。

        并且任何非空字符串都是"truthy",因为当以布尔方式(强制)评估时,它会产生true 值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-25
          • 2023-03-14
          • 2021-08-03
          • 2011-05-19
          • 1970-01-01
          相关资源
          最近更新 更多