文字列を数字に変換する際のnumber()とparseInt()の違い(javascript)

JavaScript

javascriptでは文字列を数字に変換する方法が2種類あります。
1つはnumber()、もう1つがparse系メソッドです。
どちらを使っても大差はないのですが、細かい部分で微妙な違いがあるため確認します。

引数“123abc”“abc”“”(空文字)nullundefined
number()NaNNaN00NaN
parseInt()123NaNNaNNaNNaN

まずは分かりやすい違いから。
引数が”123abc”の時です。
number()は変換できないためNaNを返します。
一方でparse()は変換できない文字に当たるまでの結果を返す仕様で123を返します。
読めない文字を飛ばすわけではないので、引数が”123abc4″だとしたらpaserInt()しても123が返ります。

お次は空文字とNullの扱いです。
number()は0として値を返します。
一方でparse系はNaNを返します。
人によって好みがあると思いますが、私はNaNを返してくれた方が嬉しいです。
意図しない0が入ってバグになるのが怖い。

number()はNullを0とする割にundefinedはNaNを返します。
この辺も仕様を理解していないとバグの原因になりそうです。

コメント