首页 > 简单的javascript length-1的问题,钻胡同里了,出不来,求指教~

简单的javascript length-1的问题,钻胡同里了,出不来,求指教~

是这样的,请看如下代码片段:

var local = [{
        src: '1.jpeg'
    }, {
        src: '2.jpeg'
    }, {
        src: '3.jpeg'
    }, {
        src: '4.jpeg'
    }, {
        src: '5.jpeg'
    }, {
        src: '6.jpeg'
    }];
    
var counter = 0;

btn.onclick = function () {
    if (counter < local.length - 1) {
       console.log(local[counter].src);
       counter ++;
    }
}

counter到第5个的时候就过不去了,是不是条件要这样写counter <= local.length - 1?是这样吗?


local.length === 6

local.length - 1 === 5

counter < 5 当然到第五个就过不去了

因为 counter 是从 0 开始的,但是当处在第五个的时候,counter 已经 等于 5 了

也就是说,counter 不是一个 index,是 index + 1

index < length - 1

index + 1 <= length - 1

index + 1 < length

都行

建议你不要用那些模糊不清的变量。counter 到底是个啥?当前所处的 index?下一次的 index?


var index = -1;

btn.onclick = function() {
    if (index < local.length - 1) {
        ++index;
        console.log(local[index].src);
    }
};

如果counter是从0开始的话,那么判断条件是counter <= local.length - 1counter < local.length
counter如题主设置,容易造成全局污染,建议题主如下写,

btn.onclick = (function(counter){
   var index = counter; 
   return function(){//click 时间处理函数
      if(index < local.length){
         console.log(local[index].src);
         index++;
      }
   };
})(0);//从0开始计数
【热门文章】
【热门文章】