JavaScript打印间隔日期出现大量undefined问题求助
问题原因分析
1. 循环次数过多引发数组索引越界
你的循环条件设为i <= 7,这会让循环执行8次(i从0到7)。但days数组只有7个元素,索引范围是0到6。初始传入的name是2,每次循环name += 2,后续会依次变成4、6、8、10……当name超过6时,days[name]访问的是数组不存在的位置,自然输出undefined。
2. 外层多余的console.log导致额外输出
最后一行console.log(alternate_days(2))会打印函数的返回值,但你的alternate_days函数没有定义return语句,JS函数默认返回undefined,这又会多输出一个undefined。
修复后的代码
function alternate_days(name) { let days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] // 合并重复逻辑,用while循环避免索引越界 while (name < days.length) { console.log(days[name]) name += 2 } } alternate_days(2);
修复说明:
- 用
while循环替代for,只要name小于数组长度就继续执行,从根源避免索引越界 - 去掉冗余的奇偶分支(两个分支逻辑完全一致)
- 直接调用函数,不再用
console.log包裹,避免打印函数默认返回的undefined
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

