至少我认为在这种情况下会发生以下事情:
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
变量似乎无法访问。为什么会这样,我该如何解决?
people[i]
没有被定义。如果people
不在作用域内,你会得到类似于Uncaught ReferenceError: people is not defined
的错误。 - Felix Kling