回答編集履歴

1

markdown

2019/02/17 03:54

投稿

think49
think49

スコア18166

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 問題は関数スコープで変数iが共有されている事にあり、forループ完了時の変数 i が全ての listener 関数から参照されています。
5
+ 問題は関数スコープで変数iが共有されている事にあり、**for ループ完了時の変数 i が全ての listener 関数から参照されています**
6
6
 
7
7
  kei344 さんの回答では、「ブロックスコープでスコープを分割する(独立させる)」ことで対応しました。
8
8
 
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- 最も、この場合は event.currentTarget でも参照できるので、細かいテクニックは不要かもしれません。
31
+ 最も、この場合は `event.currentTarget` でも参照できるので、細かいテクニックは不要かもしれません。
32
32
 
33
33
 
34
34
 
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
 
47
- - addEventListenerの第三引数は後方互換性の為に省略しない方が良い
47
+ - `addEventListener` の第三引数は後方互換性の為に省略しない方が良い
48
48
 
49
49
  - listener関数をループ回数分生成してしまっている(メモリの無駄遣い)
50
50
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  ```JavaScript
54
54
 
55
- function handleClick (event) {
55
+ function handleClick (event) { // listener関数を変数に格納しておく
56
56
 
57
57
  var style = event.curentTarget.style;
58
58
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  for (let i = 0, len = section_head.length; i < len; i++){
68
68
 
69
- section_head[i].addEventListener("click", handleClick, false);
69
+ section_head[i].addEventListener("click", handleClick, false); // 格納した変数からlistener関数を指定する
70
70
 
71
71
  }
72
72