gpt4 book ai didi

javascript - JavaScript 数组的 bool 计算

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:30 25 4
gpt4 key购买 nike

前几天我遇到了一个有趣的错误。我正在测试一个数组,看它是否评估为 bool 值 false,但是直接评估它总是返回 true:

> !![]
true

好吧,基本上我放入其中的任何数组都会是 true,对吗?我在 JavaScript 控制台中运行它只是为了好玩:

> [] == true
false

这是怎么回事?

最佳答案

它与 The Abstract Equality Comparison Algorithm 有关与用于将值转换为 bool 值的算法相比。

通过查看 the spec ,我们可以看到点号 9. 是唯一定义当 Type(left side value) 为 Object 时应该发生什么的点号。但是,它指定右侧的值必须是字符串或数字

9 . If Type(x) is Object and Type(y) is either String or Number, return the result of the comparison ToPrimitive(x) == y.

查看 [] == true:

typeof []'object' 所以我们没问题,但是 typeof true 不是 'string''number',它是 'boolean',因此它回退到最后一个语句,点号 10。

10 . Return false.

但是 !![] 转换为 !!Boolean([]),并且由于 [] 是一个真实值(对象是),它与编写 !!true 相同,它返回 true

关于javascript - JavaScript 数组的 bool 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com