在使用isNumeric函数时,我发现了这种边缘情况:
[5]被认为是一个数,可以用数字运算符等中使用 +,-,/等等,并给出5时给予parseFloat。
JavaScript为什么将单个值数组转换为数字?
例如
const x = [10];
console.log(x - 5, typeof x);Run Code Online (Sandbox Code Playgroud)
给
5 object
Run Code Online (Sandbox Code Playgroud)
Cer*_*nce 24
该-操作员试图与其周围的表达式强制为数字。[5]转换为基元(通过联接所有元素,)时,将计算为'5',可以清楚地将其转换为数字而不会出现问题。
见规格:
AdditiveExpression:AdditiveExpression-乘性表达式
- 令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(参数,提示编号)。
- 返回ToNumber(primValue)。
导致ToPrimitive,toString在数组上调用,导致Array.prototype.toString,调用.join。
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |