控制檯未顯示正確的「人員」。循環中的變量不正確
我的功能如下:
(function() {
var people, length = 10;
for (people = 0; people < this.length; people++) {
setTimeout(function() {
console.log(people);
}, 1000);
}
})();
控制檯未顯示正確的「人員」。循環中的變量不正確
我的功能如下:
(function() {
var people, length = 10;
for (people = 0; people < this.length; people++) {
setTimeout(function() {
console.log(people);
}, 1000);
}
})();
在你的代碼this.length
是不是在你的函數中的局部變量length
。
this
只是全局對象window
,所以this.length
只是window.length
。
(function() {
var people,length = 10;
for (people = 0; people < length; people++) {
setTimeout((function(people){
return function() {
console.log(people);
};
})(people), 1000);
}
})();
感謝@xdazz的解釋! +1 – Dave
你的意思是像:
(function() {
var people,length = 10;
for (people = 0; people < length; people++) {
(function(index) {
setTimeout(function() { console.log(index); }, 1000);
})(people);
}
})();
+1這是一個更好的方法來做'setTimeout(「console.log(」+ people +「)」,1000);' – Shomz
+1,並且會在7分鐘內接受! :)謝謝@Sudhir – Dave
-1沒有解釋。海報不會了解爲什麼它被打破。 – epascarello
它是什麼顯示?你期望什麼結果? – Tchoupi
而不是'this.length'不應該是'length' – raser
這是'setTimeout(「console.log(」+ people +「)」,1000);'你想要什麼?或者你想讓它每秒輸出一個數字? – Shomz