Number()
は数字文字列以外が来たとき、NaNが返る
最近まで文字列→数字はNumber()
使えばいいかなと思っていましたが、よくよく調べてみるとあまりよろしくないことがわかった。
理由は数字以外が来たとき、NaNが返るということ。
Number('94'); // 94
Number('94aba'); // NaN
バグって動かなくなってしまう可能性が残るのは怖い。
他にいい方法がないか調べた。
newは選択肢に無し
var hoge = new Number('49')
これでも数字になるんだけど、newを使わなくても他に選択肢があるし、型がオブジェクトになってしまうので無し。
暗黙の型変換は選択肢に無し
'100' - 0; //100
結構これしている記事を見かける。
文字列に文字を足したら暗黙的に数字になるというやつ。
ちょっといいかなーと思ったけど、動作が速い遅い関係無く
- ぱっと見て何しているのか分からない。
- コメントが書かれていて初めて「これは数字に変換する方法の1つなのか」ってわかるのはダメ。
- そもそも暗黙の型変換なのでバグの元になる
っていう理由で無し。
今回の結論
parseInt
とparseFloat
を使い分けるのがいいかなという結論。
parseInt('9.4', 10); // 9
parseFloat('9.4'); // 9.4
parseFloat('94aaas2'); // 94
parseFloat
って書くのが長い?面倒?
- バグを防ぐ
- コードがわかりやすい
以上の2点から、僕はparseInt,parseFloatを使おうと思います。←こちらに関してはコメントを頂いて考えを改めました。