gpt4 book ai didi

javascript - 为什么一个空的 javascript 对象既不是 true 也不是 false?

转载 作者:行者123 更新时间:2023-11-30 10:12:00 24 4
gpt4 key购买 nike

NodeJs 控制台中,使用空对象与 truefalse 的非严格比较,我总是得到 false 。为什么?

> ({}) == true || ({}) == false
false

最佳答案

因为您要将对象与 bool 值进行比较。这就是事情变得复杂的地方,因为您没有使用类型安全的比较。

Booleans get compared to other types就好像它们是数字一样,即 true 首先被转换为 1false 被转换为 0。然后,当一个对象与一个数字进行比较时,它将被转换为to a primitive value。 (没有首选类型)- 调用 DefaultValue algorithm .在普通对象上,这会将它们字符串化,而你的空对象 {} becomes [object Object]”,既不等于 0 也不等于 1。

然而,有些对象将比较为等于 bool 值,例如:

[0] == false
[1] == true
({toString:function(){return "1"}}) == true
({valueOf:function(){return 0}}) == false
({valueOf:function(){return true}}) == true

关于javascript - 为什么一个空的 javascript 对象既不是 true 也不是 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26014975/

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