少なくとも、この場合に起こると私が思うことは次のとおりです。
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);
}
このエラーが発生Uncaught TypeError: Cannot read property 'name' of undefined
するため、setTimeout
リスナー関数内でpeople
変数にアクセスできないようです。なぜ、どうすれば修正できますか?