gpt4 book ai didi

javascript - JavaScript 的 (0 == "") === true 如何符合 ECMA-262 类型转换规则?

转载 作者:行者123 更新时间:2023-11-29 18:11:21 28 4
gpt4 key购买 nike

我已经看过几个问题来解释为什么 0 == ""JavaScript 中是 true,但我有一个更深层次的问题.

所以为什么 0 == "" 在 JavaScript 中是 true 的答案是字符串 "" 被转换为数字,零-length 字符串被转换为零数,但这与 [9.3.1 paragraph of ECMA-262](http://www.ecma-international.org/ecma-262/5.1/#sec-9.3 .1) 表示应该使用给定的形式语法解析字符串,如果失败,则将此类字符串转换为 NaN。当我查看此规范时,我认为 "" 不是字符串数字文字,它应该被解析为 NaNNaN 不等于到 0.0

那么,为什么上面的推测是不正确的,而 0 == "" 实际上是 true

提前致谢。

最佳答案

语法允许 StringNumericLiteral 为空:

StringNumericLiteral :::
    StrWhiteSpaceopt
    StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt

往下几行,它说:

A StringNumericLiteral that is empty or contains only white space is converted to +0.

和:

The MV of StringNumericLiteral ::: [empty] is 0.

所以恐怕您只是没有完全阅读您正在查看的标准段落。 :)

关于javascript - JavaScript 的 (0 == "") === true 如何符合 ECMA-262 类型转换规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109639/

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