Ít nhất là những gì tôi nghĩ rằng nó sẽ xảy ra trong trường hợp này:JavaScript setTimeout không thể truy cập biến chức năng
function MyFunc() {
var people = Array({name: 'Alex', age: 25}, {name: 'Ellen', age: 43});
for (var i=0; i<people.length; i++) {
setTimeout(function() { ShowIt(people[i].name) }, 1000); // !!!
}
}
function ShowIt(name) {
alert(name);
}
tôi nhận được lỗi này Uncaught TypeError: Cannot read property 'name' of undefined
, vì vậy nó trông giống như bên trong hàm setTimeout
listener biến people
không phải là có thể truy cập. Tại sao và làm thế nào tôi có thể sửa chữa nó?
Đây là lỗi rất phổ biến, hãy xem câu hỏi này: http://stackoverflow.com/questions/5226285/settimeout-in-a-for-loop-and-pass-i-as-value –
Không, điều đó có nghĩa là rằng 'người [i]' không được định nghĩa. Nếu 'người' không nằm trong phạm vi, bạn sẽ nhận được một cái gì đó giống như' Tham chiếu không bắt buộc: mọi người không được định nghĩa'. –