Unary Plus/Number(x) と parseFloat(x) の違いは何ですか? 質問する

Unary Plus/Number(x) と parseFloat(x) の違いは何ですか? 質問する

数バイトを節約するためだけにこれを尋ねています。

+xの代わりに (単項プラス)を使用できることは知っていますNumber(x)。これらと の間に違いはありますかparseFloat?

ベストアンサー1

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

さらに、Number16 進入力は理解しますが、次のことは理解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

だから私はたいてい+for short を使います。それが何をするのかわかっていれば、読みやすいと思います。

おすすめ記事