Mindestens ist das, was ich denke, es passiert in diesem Fall:JavaScript SetTimeout kann nicht Funktion Variable zugreifen
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);
}
ich diesen Fehler Uncaught TypeError: Cannot read property 'name' of undefined
bekommen, so sieht es aus wie in der setTimeout
Listener-Funktion die people
Variable nicht ist zugänglich. Warum und wie kann ich es reparieren?
Dies ist ein sehr häufiger Fehler, siehe diese Frage: http://stackoverflow.com/questions/5226285/settimeout-in-a-for-loop-and-pass-i-as-value –
Nein, es bedeutet dass 'people [i]' nicht definiert ist. Wenn 'people' nicht im Bereich sind, erhalten Sie etwas wie' Uncaught ReferenceError: people is not defined'. –