gpt4 book ai didi

javascript - !条件打印中的数字旁边在严格比较时打印为真

转载 作者:搜寻专家 更新时间:2023-11-01 04:49:45 25 4
gpt4 key购买 nike

console.log(false === 0) // false

console.log(false === !1) // true, why does it equate to true using !?

反之亦然

console.log(true === 1 ) // false

console.log(true === !0) // true

我理解相等性和恒等性之间的区别,但无法理解 JS 的这种行为。请解释一下?

最佳答案

=== 要求两个值的类型相同,不执行隐式强制转换。

当您使用三元组 === 将 bool 值与数字进行比较时,您将始终得到 false,因为它们不是同一类型

但是在数字(或其他任何东西)前使用 ! 会先将其转换为 bool 值,(!x!Boolean(x)) 这样严格比较才能成功。 (实际上,在任何东西上使用 ! 都会将其强制转换为 JS 中的 bool 值)


数字到 bool 值的转换规则:

对于数字到 bool 值的转换,0NaN 被强制转换为 false,任何非零数字被强制转换为。 (仅供引用,nullundefined 和空字符串 '' 是 JS 中仅有的其他虚假值)

现在,您将有两个 bool 值需要比较,=== 将相应地返回 true 或 false。

所以,总结一下:

!1 中,1 是非零的,因此它被强制为 true,而 !true 给出 false

所以 false === !1 等同于 false === false,这是一个 true 语句。

您可以计算出其他比较的详细信息。


作为额外资源,如果您有时间并且有兴趣了解更多信息,我推荐非常好的免费电子书“You don't know JS”。

关于javascript - !条件打印中的数字旁边在严格比较时打印为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51594527/

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