为何两段带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
相关产品推荐
相关产品推荐

