2016-07-11 2 views
0

JavaScriptを学んでいますが、現在はオペレータの章にあります。私はなぜ++trueがJavaScriptの無効な表現であり、+trueが問題ないのだろうと思っていました。私は違いは、++(または--)演算子がJavaScriptで動作するためです。 ++が適用されたときに何が起こるか知りたいだけです。++または - をJavaScriptのリテラルに直接適用できないのはなぜですか?

console.log(+true); // 1, fine 
console.log(++true); // SyntaxError 
true

が暗黙数に変換し、それが+の場合にあるようにインクリメントされない理由。

値が変数に格納されると、++は予想されるジョブを実行しますが、リテラルで直接使用することはできません。

+0

「左手側」と「右手側」の式を調べてください。いくつかの光を放つかもしれない。長文で言えば、 '1 = 1 + 1'というコードの妥当なものは何ですか? – CollinD

+2

'true'は変数ではなく、' + 'は[unary plus]です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus) –

答えて

4

++は、変数の値に1を加算し、その増分値を変数に戻します。パラメータが変数でない場合、これは意味をなさない。 trueの値を変更することはできません。 ++truetrue = true + 1に相当します。

++のいずれでも使用できません。リテラルconsole.log(++3)もエラーです。これはconsole.log(3 = 3 + 1)に相当するためです。

x = true; 
 
console.log(++x);

+0

私が++ 1かそれ以上をすることができれば、これは本当に無意味になるだろう。しかし、暗黙の型変換以外の+1(または同様の式)も役に立たないと思いました。 –

+0

'+'はその引数を数値に変換します。すでに数値であれば何もしませんが、一貫性のためには便利です。 'x'がすでに文字列であれば、' x.toString() 'と同様に正しく動作します。 – Barmar

4

++または--を使用すると、操作中の変数の値が変更されるためです。

var a = 1; 
 
console.log(++a); 
 
console.log(a); 
 
console.log(--a); 
 
console.log(a);

++trueを行うことで、あなたは絶対にひどいことを行うことであろう trueの値を変更 だことを意味しています。

trueは変更不可能な値なので、変更演算子は使用できません。

2

プリペイドおよびデクリメント後の演算子は、オペランドの変数またはプロパティを暗黙的に変更します。オペランドを代入演算子の左側に表示する必要があります。そうでない場合は、++または--を使用する意味がありません。

C、C++、Javaについても同じことが当てはまります。これらの演算子を含むすべてのC-heritageプログラミング言語がそうであるとは限りません。

0

++--オペレータが値を変更します。必要に応じて++整数にブール値に変換されますが、それは可変でなければならないこと

注。 あなたの場合には、booleanの値を増やそうとしているか、またはあなたがやっているやり方では不可能な変更可能でない値を増やそうとしています。第2のシナリオ出力で

var x = 10; 
console.log(++x) // Output 11 
console.log(x++) // Output 12 
//Or 
var y = true; 
console.log(y++) //Output 2 
true

1に等しく、false0に等しいので、2です。

関連する問題