You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两段带if判断的JavaScript循环代码执行结果不同?

数组遍历判断条件的差异解析

你遇到的问题核心是两个判断条件的对比对象完全不同:

第一个判断:mix[i] === start

这里是拿数组当前索引对应的元素值和变量start(值为0)做比较。你的数组第一个元素是mix[0] = 1,1不等于0,所以这个if条件永远不成立,continue根本不会执行,循环会从第一个元素开始全部打印出来。

对应的代码:

let start = 0;
let mix = [1, 2, 3, "A", "B", "C", 4];

for (let i = start; i < mix.length; i++) {
  if (mix[i] === start) {
    continue;
  }
  document.write(`${mix[i]} <br>`);
}

第二个判断:i === start

这里是拿循环的索引变量i和start(值为0)做比较。第一次循环时i=0,刚好等于start,触发continue跳过本次循环,直接进入i=1的循环,也就是从数组的第二个元素开始打印,完全符合你的需求。

对应的代码:

let start = 0;
let mix = [1, 2, 3, "A", "B", "C", 4];

for (let i = start; i < mix.length; i++) {
  if (i === start) {
    continue;
  }
  document.write(`${mix[i]} <br>`);
}

简单说,前者比的是「数组元素值」,后者比的是「循环的索引位置」,这就是两者的核心区别,也是前者无效、后者有效的原因。

内容的提问来源于stack exchange,提问作者Ameen Shamsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:12:35