我想问一个奇怪的javascript事情。在我看来,所有这些条件相互矛盾并且返回错误:
为什么使用> =和< =运算符返回true? > =表示gt和< =表示lt。他们不能平等。此外,“null”具有空值,0具有空值,并且对于逻辑0> null应该返回true。有人可以解释一下这个事实吗?
答案 0 :(得分:1)
当您使用>
和<
时,null
会转换为数字0
。 0 > 0
和0 < 0
都是false
(这是基本数学)。当您使用==
和===
时,null
不会转换。 0
不等于null
,因此两者都是false
。
更一般地说:为特定的数据类型定义了运算符,如果传递不同数据类型的值,则该值将首先转换为预期的数据类型。 {em>字符串和数字定义了>
和<
,但null
没有。因此null
(最终)转换为数字。
==
有点不同===
。虽然==
通常会执行类型转换,但如果您与null
进行比较,则不会执行此操作。这只是how the algorithm works。