Javascript 为什么0<;未定义返回false而不是未定义?

Javascript 为什么0<;未定义返回false而不是未定义?,javascript,comparison-operators,Javascript,Comparison Operators,为什么0和 0 > NaN==false < /代码>。我猜运算符返回的布尔结果是true或false,undefined不仅不是一个值(它是一个变量),而且也不在booleansBTW集合中,最新的规范是ed 7。在今年中,ECMAScript ED 8 AKA 2017将被释放。从年一开始就是这样

为什么
0
返回
false
而不是undefined

基于ES6规范的抽象关系比较部分,我认为它应该返回undefined。(请点击规范来理解我的意思)

我不完全理解ReturnIfAbrupt部分,但这似乎不应该停止比较。然后我将3和4解释为基本上是这样的,因为它使用了<标志,而不是>标志,然后继续。它应该忽略5,因为0和未定义都不是字符串

那么在6号。它表示将0转换为数字,即0,并将未定义的数字转换为根据


既然6f声明“如果ny是NaN,返回未定义”,那么为什么我得到的是false而不是未定义?这和铬的结果是一样的,Safari和Firefox,所以我假设所有3种浏览器对规范的解释都没有错。

答案是您正在查看抽象关系比较操作的规范,而不是
答案是您正在查看抽象关系比较操作的规范,而不是
FWIW
0
0>NaN==false
。我猜
运算符返回的布尔结果是
true
false
undefined
不仅不是一个值(它是一个变量),而且也不在booleansBTW集合中,最新的规范是ed 7。在今年中,ECMAScript ED 8 AKA 2017将被释放。FWW<代码> 0 < NaN= = false < /代码>和<代码> 0 > NaN==false < /代码>。我猜
运算符返回的布尔结果是
true
false
undefined
不仅不是一个值(它是一个变量),而且也不在booleansBTW集合中,最新的规范是ed 7。在今年中,ECMAScript ED 8 AKA 2017将被释放。从年一开始就是这样