循环javascript“跳过价值”

时间:2012-10-13 11:06:46

标签: javascript parameters for-loop return

大家好我在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时)你能告诉我什么是错的吗?

2 个答案:

答案 0 :(得分:1)

由于挖掘,

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

答案 1 :(得分:1)

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

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