3

にパラメータを渡すことができないことを理解していますaddEventListener。あなたはこれをしなければなりません

el.addEventListener("click", function(){callSomeFunction("myString");}, false);

しかし、私たちをこのようにさせる理由は何ですか?

4

2 に答える 2

6

これを行った場合:

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);
于 2013-05-16T12:56:27.847 に答える
3

addEventListener関数オブジェクトを 2 番目の引数として取らなければなりませんが、その関数オブジェクトが別の関数によって生成されない理由はありません。おそらく、関数を生成する高階関数に興味があるでしょう:

function generateAlertFunc(alertString) {
    return function() {
        alert(alertString);
    }
}

el.addEventListener("click", generateAlertFunc("myString"), false);

generateAlertFuncは引数を取り、それらを使用して に渡される新しい関数を構築しaddEventListenerます。

于 2013-05-16T13:13:47.520 に答える