javascript for 循环“跳过值”

问题描述 投票:0回答:3

大家好,我有一小段 jquery 代码,但遇到了问题。好像for循环跳过了第二个参数(当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

看来for循环跳过了第二个参数(当i = 2时)你能告诉我出了什么问题吗?

javascript parameters for-loop return
3个回答
1
投票

在函数

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

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

1
投票

var id = findNext(1, i);

 时,由于舀取,
i=2
赋值返回 3。 请参考此链接:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/


0
投票

Javascript 中的 continue 关键字会有所帮助!

for (i = 0; i < 10; i++) {
      if (i == 5) {
    
continue;
  }
  console.log(i);
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.