gpt4 book ai didi

Javascript 类型转换悖论

转载 作者:行者123 更新时间:2023-11-28 18:44:28 25 4
gpt4 key购买 nike

有人可以解释一下为什么 !==搞乱了 [] 的类型转换 bool 值:

![] // false

!0 // true

[] == 0 // true

!0 == ![] // false

同样的悖论:

0 == Boolean ([]) // false

[] == false // true

Boolean([]) // true

[] == Boolean([]) // false

最佳答案

1) ![]
任何对象实例(包括[])都是真值。 ![] -> !true -> false

2) !0
0 是虚假值。 !0 -> !false -> true

3) [] == 0
当将对象与原始值(在本例中为另一个数字)进行比较时,该对象也会转换为原始值。 [] == 0 -> 0 == 0 -> true

4) !0 == ![]
!0 == ![] -> !false == ![] -> true == ![] -> true == !true -> true == false -> false

5) 0 == bool 值 ([])
如前所述,对象转换为 bool 值时始终为 true,而 0 为 false。 0 == Boolean ([]) -> 0 == true -> 0 == 1 -> false

6) [] == false
[] == false -> [] == 0 -> 0 == 0 -> true

7) bool 值([])
对象引用始终为 true。 bool 值([]) -> true

8) [] == Boolean([])
[] == Boolean([]) -> [] == true -> [] == 1 -> 0 == 1 ->

检查this interesting post关于比较和类型转换。

关于Javascript 类型转换悖论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605858/

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