5

toFixed負の指数に対して呼び出すと、結果は文字列ではなく数値になることに気付きました。

まずはスペックから見ていきましょう。

Number.prototype.toFixed (fractionDigits)

小数点以下がfractionDigits桁の10 進固定小数点表記で表されるこの Number 値Stringを含む を返します。fractionDigitsがの場合、と見なされます。undefined0

実際に何が起こるか (Chrome、Firefox、Node.js でテスト済み):

> -3e5.toFixed()
-300000

したがって、戻り値は-3e5です。また、これは文字列ではないことに注意してください。それは数字です:

> x = -3e5.toFixed()
-300000
> typeof x
'number'

入力を括弧で囲むと、期待どおりに機能します。

> x = (-3e5).toFixed()
'-300000'
> typeof x
'string'

なぜこうなった?説明は何ですか?

4

2 に答える 2