这是一个常见闭包问题:
请问各位大佬,这个代码是怎么执行的,
比如说 当点击3的时候,是怎么执行打印出2来的?
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<script>
var elem = document.getElementsByTagName('div'); // 如果页面上有5个div
for (var i = 0; i < 5; i++) {
console.log(i);
(function (w) {
elem[w].onclick = function () {
console.log(w);
};
})(i);
}
</script>
for循环里面的自执行函数的实参来自i,在你点击的时候,实参i传递给形参w,点击第三个元素的时候,i=2,w=i=2,console.log(2)