だから私は遅延しなければならない関数を作っていて、新しい値ではなく古い値が必要です
test='old';
setTimeout( function(test) {alert(test)}, 1000,[test]);
test='new';
だから私は遅延しなければならない関数を作っていて、新しい値ではなく古い値が必要です
test='old';
setTimeout( function(test) {alert(test)}, 1000,[test]);
test='new';
コールバックに引数を渡す の機能に依存しない一般的な解決策( MDN のドキュメントsetTimeout
で説明されているように IE では機能しません) は、IIFEを使用して新しいスコープを作成し、変数の現在の値を取得することです。 :
test='old';
(function(test) {
setTimeout(function() {
alert(test)
}, 1000);
}(test));
test='new';
これは、あらゆる種類のコールバックで機能します。ループ内の JavaScript クロージャー – 簡単な実用例も参照してください。