web-dev-qa-db-ja.com

javascript i ++ vs ++ i

Javascriptでi++が多くの場合に使用されるのを見ましたが、前の値に1を追加することを理解しています。

for (var i=1; i<=10; i++) {
  console.log(i);
}

しかし、これを行うとどうなりますか:

++i;

そして、--演算子を使用することで何か違いはありますか(もちろん、加算ではなく減算であること)。

104
Web_Designer

i++++iの違いは、式の値です。

i++は、増分前のiの値です。 ++iの値は、増分後のiの値です。

例:

var i = 42;
alert(i++); // shows 42
alert(i); // shows 43
i = 42;
alert(++i); // shows 43
alert(i); // shows 43

i--および--i演算子は同じように機能します。

175
Guffa

++variableは変数をインクリメントし、新しい値を返します。

variable++は変数をインクリメントしますが、古い値を返します。

--variableは変数をデクリメントし、新しい値を返します。

variable--は変数をデクリメントしますが、古い値を返します。

例えば:

a = 5;
b = 5;
c = ++a;
d = b++;

aは6、bは6、cは6、dは5です。

結果を使用していない場合、プレフィックス演算子はポストフィックス演算子と同等に機能します。

49
Delan Azabani

完全を期すために、OPの最初の質問に固有の回答を追加すると思いました。

あなたの例の1つは、forループで使用されているi ++/++ iを示しています。

for (i=1; i<=10; i++) {
  alert(i);
}

どのアラートを使用しても、アラートの数は1〜10になります。例:

console.log("i++");
for (i=1; i<=10; i++) {
  console.log(i);
}
console.log("++i");
for (i=1; i<=10; ++i) {
  console.log(i);
}

それらをコンソールウィンドウに貼り付けると、両方の出力が同じであることがわかります。

9
bladnman

i++ =ステートメントでiの値を使用し、1ずつ増やします
++i = iの値を1増やし、inステートメントで使用します。

7
kaush

これらの答えがすべて言及されていないケースの1つは、i++および++iが他の数値の操作で使用された場合に何が起こるかです。 「i++は前、++iは後」という概念全体は、式が単独である場合に把握しやすいですが、ステートメントを結合し始めるとさらに混乱します。以下の例CおよびDを参照してください。

// Example A
var i = 42;
var a = i++; // equivalent to `var a = i; i = i+1;`
console.log(a); // 42
console.log(i); // 43

// Example B
var i = 42;
var b = ++i; // equivalent to `i = i+1; var b = i;`
console.log(b); // 43
console.log(i); // 43

// Example C
var i = 42;
var c = i++ * 2; // equivalent to `var c = i*2; i = i+1;`
console.log(c); // 84
console.log(i); // 43

// Example D
var i = 42;
var d = ++i * 2; // equivalent to `i = i+1; var d = i*2;`
console.log(d); // 86
console.log(i); // 43

例Cでは、i++after乗算とcの割り当てまで評価されません。これは、「i++を操作の順序で最初に評価する必要がある」という誤解に対抗します。つまり、ステートメントi++ * 2は実際にi * 2を計算しますbefore増分しますi

6
chharvey

変数の値が使用される前または後に増分が発生するかどうかを決定します。

var j = 2;
console.log(j++);   // 2
console.log(j);     // 3

var k = 2;
console.log(++k);   // 3
console.log(k);     // 3
6
jfriend00
var i = 0;
console.log(i++); // 0
console.log(++i); // 2
5
Joe

私は知っている、この2011年の質問は長い間答えられてきました。

++ variable:変数を使用する前に変数をインクリメントします
variable ++:変数を使用した後に変数をインクリメントします

しかし、スニペットを使用して回答を含めることで、forループでの動作を確認できると便利だと考えました。

Forループ宣言で++ iとi ++を使用する場合、実際に違いがないことをブラウザーで確認するだけです。
そして、私たちがやっている間に--i対i-を投げます。

console.log("-- with looping --");

console.log("using ++i in a for loop");
for (var i=1; i<=3; ++i) {
  console.log(i);
}

console.log("using i++ in a for loop");
for (var i=1; i<=3; i++) {
  console.log(i);
}

console.log("using --i in a for loop");
for (var i=3; i>=1; --i) {
  console.log(i);
}

console.log("using i-- in a for loop");
for (var i=3; i>=1; i--) {
  console.log(i);
}

console.log("-- without looping --");
var i = 1;
console.log("i: "+ i);
console.log("i++: "+ i++);
console.log("i: "+ i);
console.log("++i: "+ ++i);
console.log("i: "+ i);
console.log("--i: "+ --i);
console.log("i: "+ i);
console.log("i--: "+ i--);
console.log("i: "+ i);
2
LukStorms