为什么 JavaScript 中的空字符串等于 0?

问题描述 投票:0回答:1

我理解类型强制和类型转换的概念,但它们没有阐明为什么空字符串为零。不是 NaN,而是零。

console.log(Number('')) // 0

我能找到的唯一解释是空字符串是 falsy 值的一部分,但它仅涵盖布尔上下文。

这个 MDN 文档页面 指出“空字符串为零”这一事实,以及 语言规范 (如果我没猜错的话)。

这种行为有什么理由或更深层次的含义吗?

javascript casting type-conversion type-coercion
1个回答
0
投票

JS 是一种非常松散的类型语言,因此当两种不同的类型在数学表达式中相遇时,JS 会非常努力地将它们强制转换为数字,即使这看起来很奇怪。我的猜测是,由于

''
是假的,因此它可以转换为
false
,很容易表示为
0
。我猜
Number(' ')
看起来更奇怪,但这就是我们在语言规范中的内容🤷u200d♂️:

console.log(Number(' '))

也许就是这样一个:https://tc39.es/ecma262/multipage/abstract-operations.html#sec-runtime-semantics-stringnumericvalue

© www.soinside.com 2019 - 2024. All rights reserved.