にパラメータを渡すことができないことを理解していますaddEventListener
。あなたはこれをしなければなりません
el.addEventListener("click", function(){callSomeFunction("myString");}, false);
しかし、私たちをこのようにさせる理由は何ですか?
にパラメータを渡すことができないことを理解していますaddEventListener
。あなたはこれをしなければなりません
el.addEventListener("click", function(){callSomeFunction("myString");}, false);
しかし、私たちをこのようにさせる理由は何ですか?
これを行った場合:
el.addEventListener("click", callSomeFunction("myString"), false);
callSomeFunction
すぐに実行され、addEventListener
その後使用される値を返します。
たとえば、これがあった場合:
function callSomeFunction() {
doSomeThings();
return 10;
}
次にel.addEventListener("click", callSomeFunction("myString"), false);
、実際に呼び出しますel.addEventListener("click", 10, false);
。
引数のない関数がある場合は、直接渡すことができます。
el.addEventListener("click", callSomeFunction, false);
addEventListener
関数オブジェクトを 2 番目の引数として取らなければなりませんが、その関数オブジェクトが別の関数によって生成されない理由はありません。おそらく、関数を生成する高階関数に興味があるでしょう:
function generateAlertFunc(alertString) {
return function() {
alert(alertString);
}
}
el.addEventListener("click", generateAlertFunc("myString"), false);
generateAlertFunc
は引数を取り、それらを使用して に渡される新しい関数を構築しaddEventListener
ます。