【问题标题】:Why is Boolean([]) true in JavaScript? [duplicate]为什么 Boolean([]) 在 JavaScript 中为真? [复制]
【发布时间】:2018-06-06 05:59:59
【问题描述】:

我正在阅读 JavaScript:权威指南。里面写着

Boolean([]) // => true

但我不明白这背后的逻辑。为什么空数组的布尔值是true

【问题讨论】:

标签: javascript


【解决方案1】:

JavaScript(和其他语言)具有“真”和“假”值的概念。

您说您来自 C++ 背景,所以我们可以将其与 C++ 中的类似内容类似:

if (ptr) { }

如果ptr 为空则为假,否则为真。

碰巧在 JavaScript 中,数组——甚至是空的,以及许多其他东西——都被认为是真实的。

【讨论】:

    【解决方案2】:

    ECMAScript 规范定义了如何将值转换为布尔值,每个抽象 ToBoolean 操作:https://www.ecma-international.org/ecma-262/6.0/#sec-toboolean

    该操作包括用于对象输入的单个条目:

    对象:返回true

    因此,当您向Boolean 提供任何对象时,包括一个数组(甚至是一个空数组),您将返回一个true 值,

    【讨论】:

    • 我认为这里的“为什么”是指选择“Boolean([]) === true”背后的决定,而不是“规范中描述的这种行为的位置”。 Javascript 不仅仅是从泥土中进化而来的。有人不得不认为空数组为真比空数组为假更有优势。
    【解决方案3】:

    Array 被视为一个对象,即使它是空的。这就是为什么Boolean 有一个值,意味着它是true。 只有falsenullundefined 是返回false 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 2013-02-26
      • 2013-07-01
      • 2020-09-04
      • 2023-02-23
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多