【发布时间】:2017-09-03 09:15:23
【问题描述】:
我在google的帮助下做了一个闭包函数。该功能按应有的方式工作。但是,我不确定它是如何工作的。
function ShowQuestion(i) {
console.log(i); // here 1 to 10 are logged immediately.
return function() {
console.log(i); // here the number are only logged when I mouse over on any li.
}
}
setTimeout(function() {
for (i = 0; i < document.getElementById('Previousli').getElementsByTagName('ul')[0].children.length; i++) {
document.getElementById('Previousli').getElementsByTagName('ul')[0].children[i].onmouseover = ShowQuestion(i);
}
}, 10000);
首先,我想知道为什么第一个 console.log(i) 在 10 秒超时后立即记录 1 到 10,但第二个 console.log(i) 仅在我使用鼠标时才记录“索引”超过一里?
【问题讨论】:
标签: javascript function closures