回答編集履歴
1
GTP->GPT
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
ChatGT
|
1
|
+
ChatGPTが別解を教えてくれたので、書き置きます。
|
2
2
|
|
3
3
|
■before
|
4
4
|
document.getElementsByName(parent_)[0].addEventListener("change",
|
@@ -10,8 +10,8 @@
|
|
10
10
|
(function(p,c,n){return function(e){shiborikomi(p,c,n)}})(parent_,child_,n)
|
11
11
|
);
|
12
12
|
|
13
|
-
beforeの場合、イベントリスナーが呼び出された時に、現在のスコープの parent_, child_, n の値を参照して shiborikomi 関数を呼び出します。この場合、全てのイベントリスナーで同じ parent_, child_, n の値が参照されてしまいます。つまり、最後に設定された値が全てのリスナーに適用されるということです。
|
13
|
+
「beforeの場合、イベントリスナーが呼び出された時に、現在のスコープの parent_, child_, n の値を参照して shiborikomi 関数を呼び出します。この場合、全てのイベントリスナーで同じ parent_, child_, n の値が参照されてしまいます。つまり、最後に設定された値が全てのリスナーに適用されるということです。
|
14
14
|
|
15
15
|
afterの場合、即時関数によって parent_, child_, n を引数に渡し、それぞれの値を保存するためのクロージャを返します。イベントリスナーが呼び出された時には、そのイベントリスナーに対応するクロージャ内の値が参照されます。このようにすることで、各リスナーに対して異なる parent_, child_, n の値が保存されます。つまり、各リスナーが期待通りに動作するようになります。
|
16
16
|
|
17
|
-
以上のように、即時関数を用いたクロージャを使用することで、値のスコープを適切に制御できるため、予期せぬバグを防ぐことができます。
|
17
|
+
以上のように、即時関数を用いたクロージャを使用することで、値のスコープを適切に制御できるため、予期せぬバグを防ぐことができます。」
|