gpt4 book ai didi

javascript - 为什么 0 < undefined 返回 false 而不是 undefined?

转载 作者:行者123 更新时间:2023-11-30 11:41:45 25 4
gpt4 key购买 nike

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

基于ES6规范的抽象关系比较部分http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-relational-comparison我认为它应该返回未定义。 (请点击规范以了解我在说什么)

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

然后在 6. 它说将 0 转换为数字,即 0 并将 undefined 转换为数字,根据 http://www.ecma-international.org/ecma-262/6.0/#sec-tonumber 应为 NaN

既然 6f 声明“如果 ny 是 NaN,则返回未定义”那么为什么我得到的是假而不是未定义?在 Chrome、Safari 和 Firefox 中结果相同,所以我假设所有 3 种浏览器都没有错误地解释规范。

最佳答案

答案是您正在查看抽象关系比较操作的规范,而不是 <运营商。

< 的规范运算符属于 ES6 中的关系运算符:http://www.ecma-international.org/ecma-262/6.0/#sec-relational-operators-runtime-semantics-evaluation

解释规范,<运算符的工作方式如下:

  • 执行抽象关系比较
  • 如果返回 undefined 则返回 false 否则返回它返回的任何内容

因此规范中有一个硬编码部分可以转换 undefined从抽象关系比较操作返回值到 false


注意:在 ES7 中也是这样指定的:http://www.ecma-international.org/ecma-262/7.0/#sec-relational-operators-runtime-semantics-evaluation所以它不会改变。此外,在 ES5 中也是这样指定的。

关于javascript - 为什么 0 < undefined 返回 false 而不是 undefined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com