【发布时间】:2014-08-12 11:27:01
【问题描述】:
我知道这个问题与JS范围有关,我已经搜索过,但无法从other stackoverflow questions得到解决方案。
我有这个程序
function write(x, y) {
console.log(x);
console.log(y);
}
var data = {
"property": {
"1": {
"values": [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
},
"2": {
"values": [[11, 12], [13, 14], [15, 16], [17, 18], [19, 20]]
}
}
}
var delay = 1000;
for (var x in data.property) {
for (var i = 0; i < data.property[x].values.length; i++) {
var one = data.property[x].values[i][0];
var two = data.property[x].values[i][1];
setTimeout(function() {
write(one, two);
}, delay);
delay += 1000;
}
}
从对象中读取数据并循环遍历对象和其中的数组。我希望它相隔一秒打印数组值,但它总是打印上次迭代的值。我已尝试按照另一个问题中的建议使用闭包,但无法使其正常工作。
【问题讨论】:
标签: javascript arrays loops object