5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScriptでstring->numberへのcastは2種類あるので使い分ける

Posted at
  • 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

参考

5
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?