どのハンドラが実行されますか?
重要性: 5
変数の中にボタンがあります。そこにはハンドラはありません。
次のコードの後クリックするとどのハンドラが実行されるでしょう?どのアラートが表示されますか?
button.addEventListener("click", () => alert("1")); button.removeEventListener("click", () => alert("1")); button.onclick = () => alert(2); 答え: 1 と 2.
最初のハンドラは実行されます、 removeEventListener で削除されていないからです。 ハンドラを削除するには、割り当てたものと全く同じ関数を渡す必要があります。また、コード内に新しい関数が渡されます。これは同じように見えますが、別の関数です。
関数オブジェクトを削除するためには、このように参照を保持しなければなりません。:
function handler() { alert(1); } button.addEventListener("click", handler); button.removeEventListener("click", handler); ハンドラ button.onclick は addEventListener に加えて、独立して動作します。