- Number()
- parseInt
の2種類ある
挙動に違いは以下
Number()とparseInt()の違い
console.log(Number("1234")); // 1234
console.log(parseInt("1234")); // 1234
console.log(Number("asdf")); // Nan
console.log(parseInt("asdf")); // Nan ここまでは同じ結果
console.log(Number("")); // 0 空の文字列のとき0
console.log(parseInt("")); // Nan からの文字列のときNan
例えば JSON.stringify
でこれらを変換する場面で結構な違いになる
const obj = {foo: parseInt("")};
console.log(JSON.stringify(obj)); // {"foo": null}
obj.foo = Number("");
console.log(JSON.stringify(obj)); // {"foo": 0}
自分のイメージ的には ""
をnumberにcastしたときは null
値になって欲しい気がするので、基本的には parseInt()
を使ったほうが意図しない変換結果になることを防げる気がする
また、 parseInt
は以外と名前の通りいろいろやってくれる
console.log(parseInt("20px")); // 20 いい感じにparseしてくれる
console.log(parseInt("Jackson5")); // NaN でも後方にある場合はだめ
console.log(Number("20px")); // Nan
// 基数指定できるのもparseInt
console.log(parseInt("0x100", 16)); // 256