undefined == undefined是真的。但是undefined> = undefined是假的?

时间:2017-10-06 14:47:27

标签: javascript undefined

我只是有一个微不足道的问题。

为什么undefined == undefined会返回true,但undefined >= undefinedfalse

undefined等于undefined

但它不等于或更大?

3 个答案:

答案 0 :(得分:46)

>= operator基本上是对< operator的否定。并且两者都调用Abstract Relational Comparison Algorithm,它返回{em> undefined for undefined >= undefined,如步骤3(a到c)中所定义。实际上,您还可以看到大于( - 或等于)和小于( - 或等于)的运算符仅用于处理数字或字符串

然后在>=运算符规范的6.步骤中,您可以看到它返回 false 的原因:

  

如果r true 未定义,请返回 false 。否则,返回 true

答案 1 :(得分:8)

undefined >= undefined||,&#34;中的OR大于或等于&#34;与此OR >, <, >=不同。

就其而言,undefined等比较运算符适用于数字而undefined不是数字,10 >= "Hello World"未定义。

10 >= "10"时,您期望作为返回值?当然是假的,但true再次返回10 == "10",因为10 === "10"为真且>=为假。 &#34; 10&#34;可以转换为数字,这样我们就可以看到在实际数字的情况下返回的结果,而不是带数字的字符串。

!=没有严格的相等运算符版本,而!==null

当您尝试比较undefinedNaN10时,会发生一些非常奇怪和令人困惑的事情 - 这是JavaScript的规范可能能够回答的问题,因为JavaScript是一个非常松散的类型语言,并且类型非常灵活,这就是为什么人们可以比较"10"和{{1}}并仍然得到结果,这些结果只有在比较大多数其他语言中的两个整数时才可能得到。

问题和讨论比直接投票更受欢迎。感谢。

答案 2 :(得分:2)

不等式运算符(<>等)不能用于比较无法隐式转换为数字的值。这包括undefined。您所看到的原因是,与其他语言不同,如果您尝试执行此类操作(即python中的TypeError),则抛出错误,JS允许您执行此操作。但是,结果总是错误的。