Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于未定义的循环';错误';_Javascript_Arrays_For Loop_Console.log - Fatal编程技术网

Javascript 对于未定义的循环';错误';

Javascript 对于未定义的循环';错误';,javascript,arrays,for-loop,console.log,Javascript,Arrays,For Loop,Console.log,我要做的是将空数组记录为for循环中的years数组。这些年的表现非常好,但我一直在控制台的末尾得到未定义的。有人能给我解释一下为什么会这样吗 p.S-自学成才的开发者,所以请容忍我,谢谢 var empty = []; var years = [1996, 1997, 2001, 1975, 1943]; for(var empty = 0; empty <= years.length; empty++) { console.log(years[empty]); } var

我要做的是将空数组记录为for循环中的years数组。这些年的表现非常好,但我一直在控制台的末尾得到
未定义的
。有人能给我解释一下为什么会这样吗

p.S-自学成才的开发者,所以请容忍我,谢谢

var empty = [];

var years = [1996, 1997, 2001, 1975, 1943];

for(var empty = 0; empty <= years.length; empty++) {
    console.log(years[empty]);
}
var empty=[];
风险值年份=[1996、1997、2001、1975、1943];

对于(var empty=0;empty在上一次迭代中,您的
empty===5
,因此
5是一个
数组
,您从索引开始到
0
,然后一个接一个地到达
数组的长度

var arr = ['a', 'b', 'c', 'd', 'e']
现在这个
数组包含
5个元素
。如果你从
0
开始计算,你的
第五个元素索引
4
。但是在你的
循环
中,当索引是5时,你就破坏了它。因为
索引5
上没有元素,你得到了未定义的错误

解决方案 在这里,您可以检查索引是否为
,这里有一个解决方案:

var empty = [];

var years = [1996, 1997, 2001, 1975, 1943];

for(var empty = 0; empty < years.length; empty++) {
    console.log(years[empty]);
}
var empty=[];
风险值年份=[1996、1997、2001、1975、1943];
对于(var empty=0;empty

您说您正在学习,请查找为什么数组索引以0开头。

您会看到
未定义的
,因为您正在枚举数组的长度

--

尝试以下新语法:

const years = [1996, 1997, 2001, 1975, 1943];

for(let year of years) {
    console.log(year);
}
或功能样式,请参见Array.prototype.map

years.map(year => console.log(year))

由于您有
空,变量
empy
被定义了两次,首先是数组,然后是数字。(空不是个好名字。在for循环中,您可以使用index、idx或i)。您的年长是5个元素,第一个元素位于索引0,因此只定义了索引0到4,而不是索引5。更改