JavaScript数组面试真题:查找代码错误并完成调试说明
面试题代码分析与调试
原代码运行结论
代码本身无语法错误,可以正常执行,但逻辑完全不符合设计预期,核心问题出在条件判断的比对对象错误。
错误原因分析
- 循环变量
i是数组的下标索引,为Number类型,取值范围是0~6的整数 - 代码中直接用
i === 'Wednesday'、i === 'Saturday'做严格相等判断,类型完全不匹配,两个判断条件永远返回false,对应的分支逻辑永远不会触发,最终只会按顺序打印出数组中所有的星期名称,没有任何预期的特殊提示,也不会提前终止循环。
修正方案
有两种可行的修正逻辑:
- 比对索引对应的数组值(可读性更高,推荐)
- 直接比对索引数值(写法更简洁)
修正后代码(推荐方案)
const weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; for (let i = 0; i < weekDays.length; i++){ // 将判断对象从索引i改为索引对应的数组值weekDays[i] if (weekDays[i] === 'Wednesday'){ console.log('Today is Wednesday, join board meeting by 10:00am'); continue; } if (weekDays[i] === 'Saturday'){ console.log("Today is Saturday, weekend is great!"); break; } console.log(weekDays[i]); }
修正后运行结果
- 依次输出:
Sunday、Monday、Tuesday - 匹配到Wednesday时,输出会议提醒,
continue跳过本次的星期打印逻辑,继续下一轮循环 - 接着输出:
Thursday、Friday - 匹配到Saturday时,输出周末提示,
break直接终止循环,不会打印Saturday本身
内容的提问来源于stack exchange,提问作者user10276796
相关产品推荐
相关产品推荐

