gpt4 book ai didi

javascript - 为什么 JavaScript 负数不总是真或假?

转载 作者:IT王子 更新时间:2023-10-29 03:02:42 29 4
gpt4 key购买 nike

-1 == true;        // false
-1 == false // false
-1 ? true : false; // true

谁能解释一下上面的输出?我知道我可以通过与 0 进行比较来解决这个问题,但我很感兴趣。我希望至少有一个草率的 equals 语句是真的,因为它们进行隐式类型转换,而且我当然没想到三元会得出完全不同的结果。

最佳答案

在前两种情况下, bool 值被转换为数字 - 1 for true and 0 for false .在最后一种情况下,它是一个转换为 bool 值的数字,除 0 和 NaN 之外的任何数字都将转换为 true。所以你的测试用例更像这样:

-1 == 1; // false
-1 == 0; // false
true ? true : false; // true

这同样适用于任何非 0 或 1 的数字。

有关更多详细信息,请阅读 ECMAScript 文档。来自3rd edition [PDF]11.9.3 节抽象相等比较算法:

19. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).

值得一读完整的算法,因为其他类型可能会导致更糟糕的陷阱。

关于javascript - 为什么 JavaScript 负数不总是真或假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619797/

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