老师您看我这样理解对么?

来源:2-9 编程练习

Walker游游

2019-11-16 15:59:01

一、JS没有块级作用域,所以for循环内不会保留i的值,需要通过创建函数,保存i的值;

二、这里的闭包,其实是将“在循环外创建一个函数,在循环内调用”,改成了“在循环内创建匿名函数并自己调用”。

var lis=document.getElementsByTagName("li");
        for(var i=0,len=lis.length;i<len;i++){
            (function(n){
               lis[n].onclick = function () {
                   alert(n);
               }
            })(i);
        }
        
        // for (var i = lis.length - 1; i >= 0; i--) {
        //     fn(i);
        // }
        
        // function fn(n) {
        //     lis[n].onclick = function () {
        //         alert(n);
        //     }
        // }

http://img.mukewang.com/climg/5dcfaac0094ccbb506800342.jpg

写回答

1回答

好帮手慕糖

2019-11-16

同学你好,理解是对的,代码实现也是可以的,继续加油!

祝学习愉快!

0

0 学习 · 14456 问题

查看课程