-4

だから私は遅延しなければならない関数を作っていて、新しい値ではなく古い値が必要です

test='old';

setTimeout( function(test) {alert(test)}, 1000,[test]);

test='new';
4

1 に答える 1

2

コールバックに引数を渡す の機能に依存しない一般的な解決策( MDN のドキュメントsetTimeoutで説明されているように IE では機能しません) は、IIFEを使用して新しいスコープを作成し、変数の現在の値を取得することです。 :

test='old';

(function(test) {
    setTimeout(function() {
        alert(test)
    }, 1000);
}(test));

test='new';

これは、あらゆる種類のコールバックで機能します。ループ内の JavaScript クロージャー – 簡単な実用例も参照してください。

于 2013-08-04T21:38:22.147 に答える