0

1) イベント駆動型の内部関数があります。
2) 内部関数は外部関数の変数に依存します。
3) 外側の関数の変数は、外側の関数のパラメーターです。
4) 外側の関数が数回実行されています。

q) 内部関数が後でコード内でトリガーされたときに、外部関数のパラメータ変数を除外できる値は何ですか?

シナリオ 1) 内部関数をトリガーするとき、内部関数の作成時に存在した外部関数の正確な状態が使用されます。
シナリオ 2) 内部関数をトリガーするとき、外部関数からの最新の値が使用されます。

例:

function outerFunction(parameter) {
    var object = new Object();
    object.on('click', function () {
        alert(parameter);
    });
    return object;
}
4

3 に答える 3

0

jQuery (および、おそらく同様のライブラリ) の場合、 on(evt, handler) を呼び出すたびに、新しいハンドラをそのイベントの要素にバインドします。そして、jQuery はハンドラーをスタックします。

したがって、次のようにします。

outerFunction(1);
outerFunction(2);

jQuery は 2 つのハンドラーをバインドし、オブジェクトの「クリック」をトリガーすると、次のようになります。

  1. 「1」のアラート。
  2. 「2」のアラート。

そのためのフィドル: http://jsfiddle.net/ajWvk/

それが何らかの抽象イベント バインディングの実装であり、実装がハンドラーをスタックしない場合は、outerFunction の呼び出しごとに新しいハンドラーをバインドし、以前のハンドラーをすべて消去します。

この場合、以下を呼び出します。

outerFunction(1);
outerFunction(2);

オブジェクトで「クリック」がトリガーされた場合にのみ、「2」をアラートします。

于 2013-11-14T20:49:54.347 に答える