至少是我认为它发生在这种情况下:的JavaScript的setTimeout不能访问功能的可调
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
变量不无障碍。为什么以及如何修复它?
这是一个非常常见的错误,请参阅此问题:http://stackoverflow.com/questions/5226285/settimeout-in-a-for-loop-and-pass-i-as-value –
不,意思是人们[i]'没有被定义。如果'people'不在范围内,则会出现'Uncaught ReferenceError:人员未定义'之类的内容。 –