2016-04-28 6 views
7

私は文字列を持っているとします。値は既に数値です。 var str = "1234"これをnumberに変換します。文字列を数値に変換するには、+ strがJSのstr * 1より優れているのはなぜですか?

私はこれまで、インターネット上の2つのトリックを見てきました

  1. 使用単項+var num = +str
  2. 利用乗算演算子*var num = str*1

は、私は1つがあるかを知りたいです一般的には良い。

ここで受け入れられた回答のコメントからわかりましたが、Converting Json Results to a Dateのように、避けるのが最も良いのは*1です。これは本当ですか、それの背後にある理由は何ですか?

+5

、のparseInt()は単項プラス番号に値を変換することを意図するもので定義することによるものであるので、それは、より意味的に正しい別を導入する1乗じるよりだ –

+2

良いだろうオペランド。 @EricSo - parseInt()は、文字列内の非数値データまたは小数点以下の値を特に無視したい場合にのみ優れています。そうでなければ、unary plus *より悪い*です。おかげさまで – nnnnnn

答えて

10

基本的に少ない操作です。

unary plusは内部のtoNumberメソッドを呼び出しますが、乗算演算子はtoNumberも呼び出して、その上で数学演算を行います。

なぜ特別な手順がありますか?整数について

http://www.ecma-international.org/ecma-262/6.0/#sec-unary-plus-operator

http://www.ecma-international.org/ecma-262/6.0/#sec-applying-the-mul-operator

+0

きれいでクリアな答えを、私に+ハッキーではないことを教えてください。それは確かに仕事をする公式な意志です。 – shole

+1

強力な型付き言語が実装されているので、私はそれが '公式の意思'単項 '+'です。しかし、ASMと呼ばれる特定のJavaScriptサブセットを使用する場合、 '+'は正式に浮動小数点数の型定義に使用され、 ' | 32ビット整数を型定義するために0が使用される。 –

関連する問題