JavaScript

javascript 文字列を数字に変換する

More than 1 year has passed since last update.

Number()は数字文字列以外が来たとき、NaNが返る

最近まで文字列→数字はNumber()使えばいいかなと思っていましたが、よくよく調べてみるとあまりよろしくないことがわかった。
理由は数字以外が来たとき、NaNが返るということ。

Number('94');    // 94
Number('94aba'); // NaN

バグって動かなくなってしまう可能性が残るのは怖い。
他にいい方法がないか調べた。

newは選択肢に無し

var hoge = new Number('49')

これでも数字になるんだけど、newを使わなくても他に選択肢があるし、型がオブジェクトになってしまうので無し。

暗黙の型変換は選択肢に無し

'100' - 0; //100

結構これしている記事を見かける。
文字列に文字を足したら暗黙的に数字になるというやつ。
ちょっといいかなーと思ったけど、動作が速い遅い関係無く

  • ぱっと見て何しているのか分からない。
  • コメントが書かれていて初めて「これは数字に変換する方法の1つなのか」ってわかるのはダメ。
  • そもそも暗黙の型変換なのでバグの元になる

っていう理由で無し。

今回の結論

parseIntparseFloatを使い分けるのがいいかなという結論。

parseInt('9.4', 10);    // 9
parseFloat('9.4');      // 9.4
parseFloat('94aaas2');  // 94

parseFloatって書くのが長い?面倒?

  • バグを防ぐ
  • コードがわかりやすい

以上の2点から、僕はparseInt,parseFloatを使おうと思います。←こちらに関してはコメントを頂いて考えを改めました。