猿问

小白求问下闭包案例的执行过程?????自调用那块还有事件触发时的过程;

<html lang="en"><head>
    <meta charset="UTF-8">
    <title>Title</title></head><body><ul id="box">
    <li>xx</li>
    <li>aa</li>
    <li>dd</li>
    <li>ss</li></ul><script>
    var box = document.getElementById("box");    var liObj = box.children;    for (var i = 0; i < liObj.length; i++) {        var li = liObj[i];
        (function (i) {
            li.onclick = function () {                console.log(i)
            };
        })(i)
    }**加粗文字**</script></body></html>


收到一只叮咚
浏览 381回答 2
2回答

芜湖不芜

我理解的是,for循环触发一瞬间完成了,后序的i不是按照0-3这样走的,立即执行函数将外面的参数传递进去,引用了外部的i变量形成了闭包,所以里面的li事件触发的时候,依据作用域变量查找原则,找到的i就是传递进来的i。

HUX布斯

li赋值完成后 执行自调用函数 给li标签绑定一个点击函数 函数当中使用的i在每次执行时因为当前作用域没有 都要上溯一下找到传参给自调用函数中的i&nbsp;找到后输出
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答