为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2021-06-29 01:22:15
在处理一个isNumeric函数时,我发现了这个边缘情况:[5]被认为是一个数,可以用数字运算符等中使用 +,-,/等等,并给出5时给予parseFloat。为什么 JavaScript 将单值数组转换为数字?例如const x = [10];console.log(x - 5, typeof x);给5 object
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

-操作员试图与其周围的表达式强制为数字。[5],当转换为原始类型(通过 连接所有元素,)时,计算结果为'5',可以清楚地转换为数字而不会出现问题。

请参阅规范

AdditiveExpression : AdditiveExpression - MultiplicativeExpression

  1. 让 lref 是对 AdditiveExpression 求值的结果。

  2. 令 lval 为 GetValue(lref)。

  3. ReturnIfAbrupt(lval)。

  4. 让 rref 是 MultiplicativeExpression 的计算结果。

  5. 令 rval 为 GetValue(rref)。

  6. ReturnIfAbrupt(rval)。

  7. 令 lnum 为 ToNumber(lval)。

  8. ReturnIfAbrupt(lnum)。

  9. 令 rnum 为 ToNumber(rval)。

  10. ReturnIfAbrupt(rnum)。

  11. 返回对 lnum 和 rnum 应用减法运算的结果。请参阅下面的注释 12.7.5。

ToNumber 确实,在一个对象的情况下:

  1. 令 primValue 为 ToPrimitive(argument, hint Number)。

  2. 返回 ToNumber(primValue)。

这导致ToPrimitive,调用toString数组,这导致Array.prototype.toString,它调用.join.


查看完整回答
反对 回复 2021-07-01
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信