JavaScript の parseInt() と Number() はどちらも与えられた文字列を数値に変換する関数です。
それぞれの違いについて、どちらを使えばいいかをまとめます。
主な違い
| 違い | parseInt() | Number() |
|---|---|---|
| 対応している数値のタイプ | 整数のみ | 整数と浮動小数点 |
| 不正な文字への対応 | 部分的に解析する | NaN を返す |
| 基数の指定 | できる | できない |
| 空白文字への対応 | 前後の空白を無視する。数字の間に空白が含まれていても認識する | 前後の空白を無視する。数字の間に空白が含まれていると NaN を返す |
1. 対応している数値のタイプ
parseInt() は整数のみ対応しています。Number() は整数と浮動小数点に対応しています。
parseInt("10"); // 10
parseInt("10.5"); // 10
Number("10"); // 10
Number("10.5"); // 10.52. 不正な文字への対応
parseInt() は数字から始まる文字列は部分的に解析し、数字から始まらない文字列には NaN を返します。Number() は NaN を返します。
parseInt("10abc"); // 10
parseInt("abc10"); // NaN
Number("10abc"); // NaN
Number("abc10"); // NaN3. 基数の指定
parseInt()は第二引数に基数を指定できます。Number() は基数を指定できず文字列を必ず 10 進数の値として処理します。
parseInt("100", 2); // 4
parseInt("100", 16); // 2564. 空白文字への対応
parseInt() 、 Number() ともに前後の空白を無視します。parseInt() は数字の間に空白が存在する場合、空白より前にある数字だけを認識します。 Number() は数字の間に空白があると NaN を返します。
parseInt(" 10 "); // 10
parseInt("10 20"); // 10
Number(" 10 "); // 10
Number("10 20"); // NaNどちらを使うべきか
parseInt() と Number() のどちらを使うかはユースケースによります。
スタイルプロパティやCSSの解析
10px といった値を数値化するには parseInt() を使うほうが良いでしょう。
科学的な計算
浮動小数点を扱える Number() が良いでしょう。