至少是我認爲它發生在這種情況下:的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:人員未定義'之類的內容。 –