【发布时间】:2014-12-01 08:46:06
【问题描述】:
<button>test</button>
<button>test</button>
<button>test</button>
<button>test</button>
<button>test</button>
<script>
var nodes = document.getElementsByTagName('button');
function clicked(i){
console.log('pass');
// Closure
// return function(){
// console.log(i);
// }
}
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', clicked(i));
}
</script>
我正在尝试对 js 闭包有一个全面的了解,上面的函数甚至为按钮添加了监听器。它控制台记录“通过”5次,然后单击按钮时什么也不做。但如果我取消注释关闭位(返回),console.log 将回显 i,但不会记录“通过”。我确实找到了相关答案,但我不明白为什么关闭 onclick 在单击按钮时不会记录“pass”字符串,而是会注销 i。 p>
【问题讨论】:
标签: javascript closures