Javascriptの単項演算子は、基本的には簡略関数です。 Unary (-)
の
-
には1つの引数があります。あなたが渡した数。フードの下で、私はそれに-1
を乗じて、製品を返すと推測しています。関数は次の行に沿って書くことができます。
function -(arg) {
return arg * -1;
}
これは推測ですが、確実に知るには、V8のコードベースを調べる必要があります。
更新:は
だから、さらなる研究から、私はそれが-1
によって代わりに乗算のだということを理解し、それは簡単な符号変化である可能性があります。私はV8の実装について言及しましたが、C++を吸ってしまったのでデッドエンドであることが判明しましたが、ECMA's specsとIEEE 754 specsをここでSteve Hollaschのすばらしいブログで定義したところで、私は符号ビットの反転に傾いています。すべてのJavaScript番号は64ビットIEEE 754浮動小数点ている、彼らはそうのように表すことができる。
S
は符号ビットである
SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
。したがって、Unary -
が符号ビットをちょうど反転させるように見えます。
これはあなたのために役立ちますhttp://stackoverflow.com/questions/5574144/positive-number-to-negative-number-in-javascript –
"簡略" [単項演算子](https:///developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_negation_(-))は、 '* = 'を使用するために' 1'を '-1'に変更する方法を変えなければなりません。 -1'オプション? (ちなみに '-'と' * 'の両方がオペランドを数値に変換しようとしているので、' x * = "-1" 'は' x = "12"; x = -x; 。) – nnnnnn
@martinの下にさらに詳しい情報を追加しました – nikjohn