Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

21
21

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 3 years have passed since last update.

JavaScript 文字列から数値に変換するときのあれこれ

Posted at

はじめに

仕事中に発狂したので記事を書きます。

#文字列から数値に変換
JavaScriptを使用したことがある方なら、一度は文字列から数値に変換したことがあると思います。変換する際に、 Number()parseInt()parseFloat() のどれかを使用すると思いますが、その際に安易に Number() を選んでいませんか。私は迷わず Number() を選んでいました。そのせいで意図しない挙動が起きました。
以下のコードを見れば皆さんも発狂すると思います。

console.log(Number('')) // 0
console.log(parseInt('')) // NaN
console.log(parseFloat('')) // NaN

「なぜ NaN を返してくれないんだ」、「そもそも、なぜ統一していないんだ」と思ったのではないでしょうか。
しかし、心優しきエンジニアの皆さんは、このくらいでは発狂しないと思いますので、他の場合も見てみましょう。

console.log(Number(null)) // 0
console.log(parseInt(null)) // NaN
console.log(parseFloat(null)) // NaN

console.log(Number(undefined)) // NaN
console.log(parseInt(undefined)) // NaN
console.log(parseFloat(undefined)) // NaN

console.log(Number('Infinity')) // Infinity
console.log(parseInt('Infinity')) // NaN
console.log(parseFloat('Infinity')) // Infinity
// ちなみに 'Infinity' ではなく Infinity の場合でも結果は同じです。

「くぁwせdrftgyふじこlp」

おわりに

しっかり使い分けましょう。

21
21
1

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

Comments

No comments

Let's comment your feelings that are more than good

21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?