Tôi muốn chuyển đối số cho hàm được gọi là sử dụng setTimeout
. Tôi đã tìm thấy ba tùy chọn:Làm thế nào tôi có thể chuyển một đối số cho một hàm được gọi là sử dụng 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); }
Điều này cho thấy 2
, undefined
và 1
trong Internet Explorer 9.
Phương pháp 1: Rõ ràng, tôi không muốn tranh luận phải được thay đổi sau khi đi qua nó (chắc chắn trong trường hợp các số nguyên đơn giản).
Phương pháp 2: Điều này sẽ hoàn hảo nếu chỉ Internet Explorer hỗ trợ.
Phương pháp 3: Đây có vẻ là lựa chọn duy nhất. Nhưng nó có vẻ khá kém so với những người khác, đi qua một cái gì đó để được đánh giá chứ không phải là một chức năng.
Có cách nào tốt hơn không?
Phương pháp 3 là một trong những bạn nên **không bao giờ sử dụng. Và Phương pháp 2 không được chấp nhận ngay cả trong các trình duyệt tắc kè - vì vậy ngay cả khi không hỗ trợ IE, nó cũng khá là không có. – ThiefMaster