9

下面的 JavaScript 循环 for increment 正在工作,但 for decrement 没有。如何解决这个问题?

for(var i=1; i<5; i++) { alert(i); } work fine

for(var i=10; i<5; i--) { alert(i); } not working
4

5 回答 5

31

最好轻松检查它...以减少使用

for (var i = 10; i > 5; i--) { alert(i); }
于 2013-04-01T13:00:39.393 回答
7

您对第二个 for 循环的条件检查不正确。你说 i=10,并在 i<5 时继续,这永远不会。

尝试

for(var i=10; i>5; i--) { alert(i); } 
于 2013-04-01T12:53:47.757 回答
4

第一个循环以i = 1并递增,因此i = [1, 2, 3, 4]while i < 5。第二个以 开头i=10,但主体永远不会执行,因为它应该只在 时运行i < 5

你想要的可能是:

for (var i = 10; i > 5; i--) { alert(i); }
于 2013-04-01T12:55:54.887 回答
2

“for”循环的第二个参数是退出条件。只要条件为真,就会执行 for 循环中的代码。例如:

for(var i = 0; i < 10; i++){
  console.log([i]);
}
在上面的 for 循环中,退出条件检查是否i小于10( i < 10),这是因为在第一个实例中 i = 0,因此循环进入代码块并运行代码,然后递增并继续,直到退出条件为不再是真的。
你明白为什么当你说:for (var i = 10; i < 5; i--){alert[i]}for循环中的代码永远不会执行,因为退出条件的i < 5计算结果为假(i等于10)。为了实现您的目标,您必须将forfor 循环的退出条件更改为:

for (var i = 10; i > 5; i--) {
    alert([i]);
}

于 2019-02-11T21:40:54.923 回答
1

您可以通过将 i 设置为您正在迭代的长度来使其更具动态性:

const string = "abcd";

for (let i = string.length; i > 0; i--) {
   console.log(str[i]);
}

注意:如果您将条件设置为,i >= 0您将忽略数组或字符串中的最后一个元素,因为它的索引基数为 0。

于 2020-04-03T15:53:06.917 回答