为什么 0 和 null 是 true 和 false with equal operator?
Why 0 and null are true and false with equal operator?
我想问一个奇怪的javascript事情。在我看来,所有这些条件都是相互矛盾的 return false:
- 0 > 空
- 0 < 空
- 0 == 空
- 0 === 空
为什么使用 >= 和 <= 运算符 return 为真? >= 表示 gt,<= 表示 lt。他们不可能是平等的。此外,“null”有一个空值,0 有一个空值,对于逻辑 0 > null 应该 return 为真。谁能给我解释一下这个事实?
当您使用 >
和 <
时,null
将转换为数字 0
。 0 > 0
和 0 < 0
都是 false
(这是基础数学)。当您使用 ==
和 ===
时,null
不会被 转换。 0
不等于 null
因此两者都是 false
。
更一般地说:运算符是为特定的数据类型定义的,如果您传递不同数据类型的值,该值将首先转换为预期的数据类型。 >
和 <
是为 字符串 和 数字 定义的,但不是为 null
定义的。因此 null
被(最终)转换为数字。
==
有点不同 ===
。虽然 ==
通常执行类型转换,但如果您与 null
进行比较,它不会执行此操作。就是 .
我想问一个奇怪的javascript事情。在我看来,所有这些条件都是相互矛盾的 return false:
- 0 > 空
- 0 < 空
- 0 == 空
- 0 === 空
为什么使用 >= 和 <= 运算符 return 为真? >= 表示 gt,<= 表示 lt。他们不可能是平等的。此外,“null”有一个空值,0 有一个空值,对于逻辑 0 > null 应该 return 为真。谁能给我解释一下这个事实?
当您使用 >
和 <
时,null
将转换为数字 0
。 0 > 0
和 0 < 0
都是 false
(这是基础数学)。当您使用 ==
和 ===
时,null
不会被 转换。 0
不等于 null
因此两者都是 false
。
更一般地说:运算符是为特定的数据类型定义的,如果您传递不同数据类型的值,该值将首先转换为预期的数据类型。 >
和 <
是为 字符串 和 数字 定义的,但不是为 null
定义的。因此 null
被(最终)转换为数字。
==
有点不同 ===
。虽然 ==
通常执行类型转换,但如果您与 null
进行比较,它不会执行此操作。就是