我注意到,当调用toFixed
一个负指数时,结果是一个数字,而不是一个字符串。
首先,让我们看一下规格。
Number.prototype.toFixed (fractionDigits)
返回一个
String
包含此 Number 值的十进制定点表示法,小数点后有fractionDigits位。如果fractionDigits是undefined
,0
则假定。
实际发生的是(在 Chrome、Firefox、Node.js 中测试):
> -3e5.toFixed()
-300000
所以,返回值为-3e5
。另外,请注意这不是字符串。它是一个数字:
> x = -3e5.toFixed()
-300000
> typeof x
'number'
如果我将输入括在括号中,它将按预期工作:
> x = (-3e5).toFixed()
'-300000'
> typeof x
'string'
为什么会这样?解释是什么?