Almeno è ciò che penso che succede in questo caso:JavaScript setTimeout non può accedere variabile funzione
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);
}
ottengo questo errore Uncaught TypeError: Cannot read property 'name' of undefined
, così sembra che all'interno della funzione setTimeout
ascoltatore la variabile non è people
accessibile. Perché e come posso risolverlo?
Questo è un errore molto comune, vedere questa domanda: http://stackoverflow.com/questions/5226285/settimeout-in-a-for-loop-and-pass-i-as-value –
No, significa quel 'persone [i]' non è definito. Se 'people' non era nel campo di applicazione, si otterrebbe qualcosa come" Uncaught ReferenceError: people is not defined ". –