JSLint Error 之 Don't make functions within a loop

最近写JavaScript的时候经常遇到Don't make functions within a loop这个错误,其实没啥大碍,即使报错也不太影响代码的执行,不过在下看着就是觉得不爽,非常的不爽,

主要遇到这个问题的地方是在for循环多个onclick事件的时候

    for (i = 0; i < length; i++) {
        (function (i) {
            pics[i].onclick = function() {
                alert(i);
            };
        }(i));
    }


事实上上面的代码其实已经解决了Don't make functions within a loop这个错误,这个错误就是为了防止函数与循环之间作用域与自变量的问题,其中的细节就不多说了.

但可恶的是,即使你用闭包,他也会继续报错,那万恶的小红波浪.

之后在网上查了很多东西最后在这里找到了解决的方法  JSlint Error Explanation (虽然是英语的,不过貌似没有比它更好的了)

    for (i = 0; i < length; i++) {
            pics[i].onclick = fs(i);
    }
    function fs(i) {
        return function() {
            alert(i);
        };
    }

上面的代码其实是觉得不应该这么写,感觉这样写以后会很乱,不过它不报错呀!!!




你可能感兴趣的:(JavaScript,error,jslint)