gpt4 book ai didi

javascript - 在 JavaScript 中使用 == 进行比较时,!0 会转换成什么?

转载 作者:行者123 更新时间:2023-11-28 13:20:46 26 4
gpt4 key购买 nike

我在控制台中尝试了一些东西。

!5 is actually false
0 is a falsy value, so
0 == !5 is true

好吧,但是当我尝试这个时

!0 is true
5 is a truthy, so
5 == !0 should be true

但事实并非如此,控制台说错误。 为什么会发生这种情况?

最佳答案

最后一行为 false 的原因是 == 不是简单的 bool 转换。它通常尝试将类型不匹配的操作数转换为数字。

因此,5 不需要转换,因为它已经是一个数字,但 !0(即 true)需要转换。值 true 会转换为 1,因此它不等于 5

您可以由此推断 1 == !0 将是 true,事实确实如此。

Abstract Equality Comparison Algorithm 中的 ES5 规范对此进行了详细说明。 ,第 7 步,其中提到了比较 x == y:

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

因此右侧 bool 值被强制转换为 ToNumber 的数字。在本例中,ToNumber 表示:

The result is 1 if the argument is true.

关于javascript - 在 JavaScript 中使用 == 进行比较时,!0 会转换成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33265673/

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