Я хочу передать аргумент функции, вызываемой с помощью setTimeout
. Я нашел эти три варианта:
A = 1;
// Method 1: closure things
setTimeout(function() { whatsA(A); }, 100);
// Method 2: third argument (same result with [A])
setTimeout(whatsA, 100, A);
// Method 3: eval
setTimeout('whatsA(' + A + ')', 100);
A = 2;
function whatsA(X) { console.log(X); }
Это показывает 2
, undefined
и 1
в Internet Explorer 9.
Метод 1: Понятно, что мне бы не хотелось, чтобы аргумент менялся после его передачи (конечно, в случае простых целых чисел).
Метод 2: Это было бы идеально, если бы его поддерживал только Internet Explorer.
Метод 3: Это, кажется, единственный выбор. Но он кажется менее красивым, чем другие, поскольку передает что-то для оценки, а не функцию.
Есть ли лучший способ?