回答編集履歴

2

質問に対する回答が明確になるよう修正しました。

2018/01/27 14:46

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,18 @@
1
- これは「②の結果をどに確認したの」が重要です。
1
+ > なぜ②の時点でarray[1]が既にソートされているでしょうか
2
2
 
3
- 例えば、コンソールで1行づつ実行して確認すれば、期待しているような結果が得られるはずです。
4
3
 
4
+
5
+ ブラウザが②を実行しているとき、`array[1]`はまだソートされていませんが、あなたが②の結果を確認しているのは、おそらくソートされた後です。きっと、①の結果も②と同じ状況になっているでしょう。
6
+
7
+
8
+
5
- また、コー以下のようにても、期待しているような結果が得られるはずです。
9
+ `console.log`はブラウザのンソルに`array[1]`表示す。
10
+
11
+ 表示された`array[1]`は「出力された当時の`array[1]`」ではなく、「いまの`array[1]`」です。
12
+
13
+ 「出力された当時の`array[1]`」を出力するには、↓のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにしてコピーをつくりましょう。
14
+
15
+
6
16
 
7
17
  ```javascript
8
18
 
@@ -18,19 +28,13 @@
18
28
 
19
29
  ```
20
30
 
21
- おそらく、あなたは②の結果をブラウザのコンソールで確認したのではないでしょうか。
22
31
 
23
- そして、その確認を行ったのは`array[1].sort()`がすでに実行されたあとではありませんか?
24
32
 
25
- きっと①の部分をクリックすると②と同じになっているはずです。
33
+ またコンソールで1行づつ実行して確認しても期待しているような結果が得られるはずです。
26
34
 
27
35
 
28
36
 
29
- あなたが結果を確認しているとき、ブラウザのコンソールは`array[1]`を表示しています。
37
+ ---
30
-
31
- この`array[1]`は「出力された当時の`array[1]`」ではなく、「いまの`array[1]`」です。
32
-
33
- 「出力された当時の`array[1]`」を出力するには、上のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにしてコピーをつくりましょう。
34
38
 
35
39
 
36
40
 

1

状況を再現するコードと画像を追加しました。

2018/01/27 14:45

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- これは「②の結果をどのように確認したのか」という点が重要です。
1
+ これは「②の結果をどのように確認したのか」が重要です。
2
2
 
3
3
  例えば、コンソールで1行づつ実行して確認すれば、期待しているような結果が得られるはずです。
4
4
 
@@ -28,6 +28,32 @@
28
28
 
29
29
  あなたが結果を確認しているとき、ブラウザのコンソールは`array[1]`を表示しています。
30
30
 
31
- この`array[1]`は「出力された当時の`array[1]`」ではなく、「瞬間の`array[1]`」です。
31
+ この`array[1]`は「出力された当時の`array[1]`」ではなく、「いまの`array[1]`」です。
32
32
 
33
- 「出力された当時の`array[1]`」を出力するには、上のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにコピーをつくりましょう。
33
+ 「出力された当時の`array[1]`」を出力するには、上のコードのようにJSONの文字列にしてしまうか、`array[1].slice()`のようにしてコピーをつくりましょう。
34
+
35
+
36
+
37
+ 以下のコードで同じような状況を再現できます。
38
+
39
+ ```javascript
40
+
41
+ var object = {a: 123, b: 123, c: 123};
42
+
43
+ console.log(object);
44
+
45
+ object.a = 456;
46
+
47
+ object.b = 456;
48
+
49
+ object.c = 456;
50
+
51
+ console.log(object);
52
+
53
+ ```
54
+
55
+ ブラウザのコンソールに2回同じオブジェクトを出力します。それぞれ、クリックして中を確認してください。中身は同じになっています。
56
+
57
+
58
+
59
+ ![イメージ説明](8a8a25afcc9595febdd36a7c7be2c7e3.gif)