JavaScript for loop "jump over value"



大家好,我在jquery中有一小段代码,我有一个问题。似乎对于循环跳过第二个参数(当i = 2时),你能告诉我出了什么问题吗?

这是代码:

    var items = $(".item").length;
    var currentIndex = items;
    place(currentIndex);
    function place(index){
        var s1 = Math.floor(items / 2);
        for (i = 1; i <= items; i++){
            (function(i, index){
                if (i <= s1){
                    var id = findNext(1, i);
                    console.log("i = " + i + " > id = " + id);
                } else if ( i > s1){
                    console.log("i = " + i);
                }
            })(i, index);
        }
    }
    function findNext(index, times){
        var result = index;
        for (i = 1; i <= times; i++){
            if (result == items){
                result = 1;
            } else {
                result ++;
            }
        }
        return result;
    }

控制台输出显示以下内容:

i = 1 > id = 2
i = 3
i = 4

所以似乎对于循环跳过第二个参数(当 i = 2 时),你能告诉我出了什么问题吗?

在函数 place 的主循环中,定义一个全局变量i 。您可以在findNext内部执行相同的操作,从而覆盖原始i变量。使用 var 关键字定义i,以便只能在创建它的作用域内访问它。

for (var i = 0; i <= items; i++) {

>var id = findNext(1, i);作业在i=2时返回 3。请参考此链接:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

最新更新