我想问一个奇怪的javascript问题。在我看来,所有这些条件都相互矛盾并返回错误:
- 0>空
- 0 <空>空>
- 0 == 空
- 0 === 空
运算符返回 true?>= 表示 gt,<= 表示 lt。他们不可能是平等的。此外,"null"具有空值,0具有空值,对于逻辑0>null应返回true。有人可以解释我这个事实吗?
当你使用>
和<
时,null
被转换为数字0
。 0 > 0
和0 < 0
都是false
(这是基本的数学)。使用 ==
和 ===
时,不会转换null
。 0
不等于null
,因此两者都是false
。
更一般地说:运算符是为特定数据类型定义的,如果传递不同数据类型的值,则该值将首先转换为预期的数据类型。 >
和<
是为字符串和数字定义的,而不是为null
定义的。因此,null
(最终)被转换为一个数字。
==
有点不同===
.虽然==
通常执行类型转换,但如果与null
进行比较,则不会这样做。这就是算法的工作原理。