toFixed
負の指数に対して呼び出すと、結果は文字列ではなく数値になることに気付きました。
まずはスペックから見ていきましょう。
Number.prototype.toFixed (fractionDigits)
小数点以下がfractionDigits桁の10 進固定小数点表記で表されるこの Number 値
String
を含む を返します。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'
なぜこうなった?説明は何ですか?