使用for循环遍历数组时控制台出现undefined的原因咨询
问题成因分析与解决方案
嘿,我来帮你拆解下这个问题~
首先,控制台末尾出现undefined的核心原因很明确:你的循环边界写错啦!
你的years数组里有5个元素,JS数组的索引是从0开始的,所以这5个元素对应的索引是0、1、2、3、4。但你写的循环条件是empty <= years.length,years.length的值是5,这意味着循环会执行到empty = 5的时候。此时years[5]根本不存在(数组里没有第6个元素),所以控制台就会输出undefined。
另外还有个小细节:你一开始声明了var empty = [];,但在for循环里又重新用var empty = 0;覆盖了这个变量,虽然这不会直接导致undefined,但没必要重复声明,容易让代码逻辑变混乱。
修正后的代码
把循环条件改成empty < years.length,这样循环只会执行到empty = 4(也就是最后一个元素的索引),就不会访问不存在的数组位置了:
var years = [1996, 1997, 2001, 1975, 1943]; for(var i = 0; i < years.length; i++) { console.log(years[i]); }
我把循环变量改成了常用的i,避免和你之前的empty变量混淆,你也可以换成其他名字,只要保持一致就行。
额外小技巧
如果只是想快速输出数组所有元素,其实还有更简洁的写法,比如用数组的forEach方法:
years.forEach(year => console.log(year));
这样不用手动处理循环索引,代码可读性也更高~
内容的提问来源于stack exchange,提问作者user9324214
相关产品推荐
相关产品推荐

