1. ホーム
  2. javascript

[解決済み] JavaScriptの無名関数に引数を渡すにはどうしたらいいですか?

2023-05-07 07:46:38

質問

JavaScriptの無名関数に引数を渡す方法を考えています。

このサンプルコードを見てください、私が言いたいことがわかると思います。

<input type="button" value="Click me" id="myButton" />

<script type="text/javascript">
    var myButton = document.getElementById("myButton");
    var myMessage = "it's working";
    myButton.onclick = function(myMessage) { alert(myMessage); };
</script>

ボタンをクリックすると、メッセージが表示されます。 it's working と表示されるはずです。 しかし myMessage の変数が NULL になっています。

jQueryは無名関数を多用しますが、その引数を渡すのに一番良い方法は何でしょうか?

どのように解決するのですか?

特定のケースを修正するだけで、動作するようになります。

<script type="text/javascript">
  var myButton = document.getElementById("myButton");
  var myMessage = "it's working";
  myButton.onclick = function() { alert(myMessage); };
</script>

この例は、作成され、要素のハンドラとして割り当てられた匿名関数は、それが作成されたコンテキストで定義された変数にアクセスすることができるので、動作します。

記録として、ハンドラ (onxxx プロパティを設定することで割り当てられる) は、DOM によって渡されるイベントオブジェクトである単一の引数を取ることを期待し、そこに他の引数を強制的に渡すことはできません。