为什么一个只有一个数字的数组被认为是一个数字?

在处理一个isNumeric函数时,我发现了这个边缘情况:


[5]被认为是一个数,可以用数字运算符等中使用 +,-,/等等,并给出5时给予parseFloat。


为什么 JavaScript 将单值数组转换为数字?


例如


const x = [10];

console.log(x - 5, typeof x);



5 object


呼如林
浏览 181回答 1
1回答

婷婷同学_

该-操作员试图与其周围的表达式强制为数字。[5],当转换为原始类型(通过 连接所有元素,)时,计算结果为'5',可以清楚地转换为数字而不会出现问题。请参阅规范:AdditiveExpression : AdditiveExpression - MultiplicativeExpression让 lref 是对 AdditiveExpression 求值的结果。令 lval 为 GetValue(lref)。ReturnIfAbrupt(lval)。让 rref 是 MultiplicativeExpression 的计算结果。令 rval 为 GetValue(rref)。ReturnIfAbrupt(rval)。令 lnum 为 ToNumber(lval)。ReturnIfAbrupt(lnum)。令 rnum 为 ToNumber(rval)。ReturnIfAbrupt(rnum)。返回对 lnum 和 rnum 应用减法运算的结果。请参阅下面的注释 12.7.5。凡ToNumber 确实,在一个对象的情况下:令 primValue 为 ToPrimitive(argument, hint Number)。返回 ToNumber(primValue)。这导致ToPrimitive,调用toString数组,这导致Array.prototype.toString,它调用.join.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript