为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

收到一只叮咚 2019-03-08 12:22:38
<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>
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-03-08
?
HUX布斯

TA贡献1876条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-03-08
  • 2 回答
  • 0 关注
  • 380 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信