1. ホーム
  2. javascript

[解決済み] number(x)とparseFloat(x)はどっちがいい?

2022-04-13 18:33:13

質問

どちらが良いですか?

number(x)の代わりに+xが使えるので、数バイトを削るためだけに聞いています。parsefloatはもっと良いことをするのでしょうか?

どのように解決するのですか?

parseFloatとNumberの違いについて

parseFloat / parseInt は文字列をパースするためのものであり、一方 Number / + は数値を強制的に指定するためのものです。両者の挙動は異なる。しかし、まず、どこで同じ動作をするのかを見てみましょう。

parseFloat('3'); // => 3
Number('3'); // => 3
parseFloat('1.501'); // => 1.501
Number('1.501'); // => 1.501
parseFloat('1e10'); // => 10000000000
Number('1e10'); // => 10000000000

つまり、標準的な数値入力である限り、違いはないのです。しかし、入力が数字で始まり、他の文字を含む場合。 parseFloat は文字列から数字を切り捨てますが Number を与える。 NaN (数字ではありません)。

parseFloat('1x'); // => 1
Number('1x'); // => NaN

さらに Number は16進数の入力を理解するのに対し parseFloat を使用しません。

parseFloat('0x10'); // => 0
Number('0x10'); // => 16

しかし Number は、空の文字列や空白だけを含む文字列で変な動作をします。

parseFloat(''); // => NaN
Number(''); // => 0
parseFloat(' \r\n\t'); // => NaN
Number(' \r\n\t'); // => 0

全体として、私は Number の方がより合理的なので、私はほとんどいつも Number 個人的には(そして、JavaScriptの内部関数の多くで Number も同様です)。もし誰かが '1x' を入力したかのように扱うのではなく、エラーを表示するのが好ましいと思います。 '1' . 私が本当に例外を設けるのは、スタイルを数値に変換するときだけで、その場合は parseFloat のような形でスタイルが来るので便利です。 '3px' を削除したいのですが、その場合は 'px' の部分のみを取得し 3 を見つけることができます。 parseFloat があります。しかし、実際にどれを選ぶかはあなた次第で、どのような形式の入力を受け入れるかもあなた次第です。

なお、単項の + 演算子を使うのと全く同じです。 Number を関数として使用します。

Number('0x10'); // => 16
+'0x10'; // => 16
Number('10x'); // => NaN
+'10x'; // => NaN
Number('40'); // => 40
+'40'; // => 40

だから私は通常 + を短くします。何をするのかさえわかっていれば、読みやすいと思います。