在javascript中向后循环时为什么使用-1?

在javascript中向后循环时为什么使用-1?,javascript,arrays,Javascript,Arrays,代码如下: var john = ['John', 'Smith', 1990, 'teacher', false, 'blue']; for (var i = john.length - 1; i >= 0; i-- ) { console.log(john[i]); } 我试图理解为什么在声明中使用-1而不是使用: for(var i = john.length; i>-1; i--){ console.log(john[i]); } 这对我来说更有意义,因

代码如下:

var john = ['John', 'Smith', 1990, 'teacher', false, 'blue'];

for (var i = john.length - 1; i >= 0; i-- ) {
    console.log(john[i]);
}
我试图理解为什么在声明中使用-1而不是使用:

for(var i = john.length; i>-1; i--){
    console.log(john[i]);
}
这对我来说更有意义,因为索引i的数组值为6,但由于数组以0开头,它不会执行索引0,因此,要执行它,条件必须大于-1


抱歉,我对编程有点陌生。

在第一次迭代中,
I
将是
john.length
,因此对
john[I]
的引用将超过数组的末尾。数组索引从0到
长度-1


当然,如果您愿意的话,
i>-1
i>=0
一样好。

在第一次迭代中,
i
将是
john.length
,因此对
john[i]
的引用将超过数组的末尾。数组索引从0到
长度-1


当然,如果您愿意的话,
i>-1
i>=0
一样好。

对于向后循环,您可以使用不同的模式,在条件中使用数字的/特征

这种方法使用真实性检查,并支持数组的基于零的索引

var john=['john','Smith',1990,'teacher',false,'blue'],
i=john.length;
而(我--){
console.log(john[i]);

}
对于向后循环,您可以使用不同的模式,在条件中使用数字的/特征

这种方法使用真实性检查,并支持数组的基于零的索引

var john=['john','Smith',1990,'teacher',false,'blue'],
i=john.length;
而(我--){
console.log(john[i]);

}
长度数组
3
的最高索引是
2
0,1,2
。试着自己运行两个版本的代码,看看会发生什么。@FelixKling我知道这一点,但为什么要使用john.length-1?我确实运行了代码,在它执行数组之前有一个未定义的值。为什么会这样?因为如果
i=john.length
,那么
i=6
(在您的示例中)并且
john[6]
未定义的,因为最高索引是
5
john[5]
返回
'blue'
)。简单复制:
console.log([1,2,3][2]);console.log([1,2,3][3])
@FelixKling非常感谢。现在这是有意义的。长度数组
3
的最高索引是
2
0,1,2
。试着自己运行两个版本的代码,看看会发生什么。@FelixKling我知道这一点,但为什么要使用john.length-1?我确实运行了代码,在它执行数组之前有一个未定义的值。为什么会这样?因为如果
i=john.length
,那么
i=6
(在您的示例中)并且
john[6]
未定义的,因为最高索引是
5
john[5]
返回
'blue'
)。简单复制:
console.log([1,2,3][2]);console.log([1,2,3][3])
@FelixKling非常感谢。这是有道理的。