简单的javascript length-1的问题,钻胡同里了,出不来,求指教~
PHP中文网
PHP中文网 2017-04-11 11:15:38
[JavaScript讨论组]

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

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?是这样吗?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
大家讲道理
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开始计数
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号