我只是有一个微不足道的问题。undefined == undefined是真的。但是undefined> = undefined是假的?
为什么undefined == undefined
返回true
,但是undefined >= undefined
是false
?
undefined
等于undefined
。
但它不等于或大于?
我只是有一个微不足道的问题。undefined == undefined是真的。但是undefined> = undefined是假的?
为什么undefined == undefined
返回true
,但是undefined >= undefined
是false
?
undefined
等于undefined
。
但它不等于或大于?
不等式运算符(<
,>
等等)不能用于比较无法隐式转换为数字的值。这包括undefined
。你看到的原因是,与其他语言不同,如果你尝试这样做(例如python中的TypeError
),JS会让你这样做。但是,结果总是错误的。
>=
operator实质上是<
operator的否定。并且都调用Abstract Relational Comparison Algorithm,其返回未定义的对于步骤3(a到c)中定义的undefined >= undefined
。实际上,您也可以看到大于( - 或 - 等于)和小于( - 或 - 等于)的运算符只能用于数字或字符串。
然后在6步骤>=
运营商的规范的,你可以看到为什么它返回假:
如果
r
是真或未定义,返回假。否则,返回true。
undefined === undefined || undefined > undefined
undefined >= undefined
和的或 “大于或等于” 是不一样的,因为这OR ||
。
就其而言,像>, <, >=
等比较运算符等用于数字而undefined
不是数字,undefined
是未定义的。
10 >= "Hello World"
是什么意思作为回报值?当然是假的,但10 >= "10"
返回true
,因为10 == "10"
为真,10 === "10"
为假。可以将“10”转换为数字,以便我们看到在实际编号的情况下返回的结果,而不是包含数字的字符串。
没有为>=
没有严格平等运营商版本,相!=
这是!==
当您尝试比较null
,undefined
,NaN
一些很奇怪和困惑的事情发生了 - 这是值得的JavaScript的规范可能能够回答,因为JavaScript是一种非常松散的类型语言,并且类型非常灵活,所以可以比较10
和"10"
,并且仍然可以获得仅在比较其他大多数语言中的两个整数时才能获得的结果。
问题和讨论比直接投票更受欢迎。谢谢。
我的猜测是,两个'undefined's被强制为'NaN',这不等于它自己。 – Xufox
'undefined === undefined || undefined>和undefined> = undefined,OR中的“大于或等于”与此不同或“||” –
@DeepakKamat在'> ='背后发生了什么?我想这就是这个问题在 – theonlygusti