回答編集履歴

1

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

2019/10/19 14:02

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -5,3 +5,81 @@
5
5
  このページの、インクリメントについての解説に載っています。
6
6
 
7
7
  前置法と、後置法で返す値が変わるっていうことです。
8
+
9
+
10
+
11
+ また、上記に挙げたページにはっきりと書いてあります。
12
+
13
+
14
+
15
+ > **インクリメント演算子は数値を 1 ずつ加算し**、値を返します。
16
+
17
+
18
+
19
+ とある通り、インクリメント演算子は、**その変数自体の数値加算**を行った上で、値を返すということになります。
20
+
21
+ なので、下記のようなことになります。
22
+
23
+
24
+
25
+ ```javascript
26
+
27
+ var x = 3;
28
+
29
+ var y = x++;
30
+
31
+
32
+
33
+ // と
34
+
35
+
36
+
37
+ var x = 3;
38
+
39
+ var y = x + 1;
40
+
41
+
42
+
43
+ // は、やっていることが(式がそもそも)違う
44
+
45
+ ```
46
+
47
+
48
+
49
+ ということです。
50
+
51
+ 後者は、`x`に対して加算処理を行いません。
52
+
53
+ あくまで、xに+1とした式の結果の値が返ってきて、yに代入されているだけです。
54
+
55
+
56
+
57
+ そして、同じインクリメントでも、その値を返す時、前置法と後置法で返す値(加算後と加算前の違い)が違うので、
58
+
59
+ 今回の質問のような出力結果となります。
60
+
61
+
62
+
63
+ ```javascript
64
+
65
+ var x = 3;
66
+
67
+ var y = x++;
68
+
69
+
70
+
71
+ // と
72
+
73
+
74
+
75
+ var x = 3;
76
+
77
+ var y = ++x;
78
+
79
+
80
+
81
+ // は、xに対して加算しているのは違いないが、(最終のxの値は同じということ)
82
+
83
+ // 式自体が返す値が、加算前なのか加算後なのかの違いがある
84
+
85
+ ```