猿问

js闭包问题:有大佬能解释一下这个代码是怎么执行的吗?

这是一个常见闭包问题:

请问各位大佬,这个代码是怎么执行的,
比如说 当点击3的时候,是怎么执行打印出2来的?


<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>

<script>

var elem = document.getElementsByTagName('div'); // 如果页面上有5个divfor (var i = 0; i < 5; i++) {    console.log(i);
    (function (w) {
        elem[w].onclick = function () {            console.log(w);
        };
    })(i);
}

</script>


FFIVE
浏览 454回答 1
1回答

慕勒3428872

for循环里面的自执行函数的实参来自i,在你点击的时候,实参i传递给形参w,点击第三个元素的时候,i=2,w=i=2,console.log(2)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答