【发布时间】:2017-07-04 03:44:47
【问题描述】:
function displayValues(values) {
for (var i = 0; i < values.length; i++) {
setInterval(function() {
console.log('The item ' + i + ' has value ' + values[i]) //Currently only logs length of array
}, 500)
}
}
var array = ['a', 'b', 'c', 'd'];
displayValues(array)
我将 SetInterval 封装在一个函数中,该函数当前记录索引 0 和值 a,但我永远无法获得其余的值。下面是我的代码。我接近了吗?
function display(values) {
function getVal(){
return setInterval(function() {
console.log('The item ' + i + ' has value ' + values[i])
}, 500)
}
for (var i = 0; i < values.length; i++) {
return getVal()
}
}
【问题讨论】:
-
function getVal(i){和return getVal(i)... 哦,并删除调用getVal的行中的return- 因为这将在一次迭代后终止您的函数 -
或者,对于现代浏览器...在您的第一个代码块中将
var i更改为let i -
您不应该使用
setTimeout()而不是setInterval()吗?使用setInterval()将继续永久记录,而不是每个元素一次。
标签: javascript for-loop closures