数バイトを節約するためだけにこれを尋ねています。
+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
さらに、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
だから私はたいてい+
for short を使います。それが何をするのかわかっていれば、読みやすいと思います。