teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

もう少し詳しく解説を追記

2019/10/19 14:02

投稿

miyabi_pudding
miyabi_pudding

スコア9572

answer CHANGED
@@ -1,4 +1,43 @@
1
1
  [算術演算子 - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators)
2
2
 
3
3
  このページの、インクリメントについての解説に載っています。
4
- 前置法と、後置法で返す値が変わるっていうことです。
4
+ 前置法と、後置法で返す値が変わるっていうことです。
5
+
6
+ また、上記に挙げたページにはっきりと書いてあります。
7
+
8
+ > **インクリメント演算子は数値を 1 ずつ加算し**、値を返します。
9
+
10
+ とある通り、インクリメント演算子は、**その変数自体の数値加算**を行った上で、値を返すということになります。
11
+ なので、下記のようなことになります。
12
+
13
+ ```javascript
14
+ var x = 3;
15
+ var y = x++;
16
+
17
+ // と
18
+
19
+ var x = 3;
20
+ var y = x + 1;
21
+
22
+ // は、やっていることが(式がそもそも)違う
23
+ ```
24
+
25
+ ということです。
26
+ 後者は、`x`に対して加算処理を行いません。
27
+ あくまで、xに+1とした式の結果の値が返ってきて、yに代入されているだけです。
28
+
29
+ そして、同じインクリメントでも、その値を返す時、前置法と後置法で返す値(加算後と加算前の違い)が違うので、
30
+ 今回の質問のような出力結果となります。
31
+
32
+ ```javascript
33
+ var x = 3;
34
+ var y = x++;
35
+
36
+ // と
37
+
38
+ var x = 3;
39
+ var y = ++x;
40
+
41
+ // は、xに対して加算しているのは違いないが、(最終のxの値は同じということ)
42
+ // 式自体が返す値が、加算前なのか加算後なのかの違いがある
43
+ ```