既然JavaScript有数字分隔符(_U+005F),为什么Number("3_0")返回NaN?它不应该像返回8的Number("0x08")那样工作吗?

Number.isNaN(Number("3_0")) // true
Number.isNaN(Number(3_0))   // false
Number("3_0") === 30        // false
Number(3_0) === 30          // true

推荐答案

根据spec,当转换为数值时,数字文字所接受的语法与字符串值所接受的语法之间存在一些差异.

区别之一是

[UNK]StringNumericLiteral[UNK]不能包含[UNK]NumericLiteralSeparator.

如果我不得不猜测的话,原因是接受这些字符会改变现有有效JavaScript代码的行为,这可能会 destruct 正常工作的应用程序.

Javascript相关问答推荐

当我使用jQuery时,我的图标显示为[对象对象]

带对角线分隔符的图像滑动器

仅在React和JS中生成深色

JS、C++和C#给出不同的Base 64 Guid编码结果

对象和数字减法会抵消浏览器js中的数字

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

在Angular中将样式应用于innerHTML

如何为我的astro页面中的相同组件自动创建不同的内容?

对路由DOM嵌套路由作出react

在Matter.js中添加从点A到另一个约束的约束

如何将未排序的元素追加到数组的末尾?

环境值在.js文件/Next.js中不起作用

为什么JPG图像不能在VITE中导入以进行react ?

MongoDB受困于太多的数据

令牌JWT未过期

未捕获语法错误:Hello World中的令牌无效或意外

如何使用Astro优化大图像?

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

react 路由DOM有条件地呈现元素