0

我目前正在学习 javascript,但我对为什么我的 do-while 循环不起作用感到有些困惑。也许我错过了它应该如何工作的核心概念,但我似乎不明白为什么这不起作用。我可以使用 for 循环或常规 while 循环来遍历此列表,我理解这些很好,但我想使用 do-while 循环来解决这个问题。谁能解释什么是错的?

i=0

var names = ['Bobby', 'Chris', 'John', 'Joe'];


do{
   i+=1
}
while(i < 4){
 console.log(names[i]);
}
4

2 回答 2

6

语法应该包含大括号dowhile大括号之间的所有内容:

do{
   console.log(names[i]);
   i+=1
} while(i < 4);

小提琴

于 2013-06-16T01:02:34.277 回答
1

你的语法是错误的,当你使用do{ }while()while 部分不带任何大括号时,没有必要。

想像Do..while blocks“先拍,后问”

换句话说,您首先执行一段代码,然后您确定条件是否仍然为真。

你得到一个未定义的输出的原因是因为你试图访问一个未定义的元素。

JavaScript 数组是从零开始的,这意味着如果您有一个包含4 个元素的数组,您的索引将从0 变为 3

由于您的性质是在测试之前do{ } while()增加您是否已到达数组的末尾,因此当您的循环结束时,您的值为i i4

并且您向 javascript 询问不存在的 names[4] 的值,最终得到undefined控制台输出。

如何解决这个问题?

这取决于您要达到的目标。在我看来,您的代码就像您正在尝试访问数组中的最后一个元素,如果您正在尝试更改当前条件形式:

while(i < 4)while(i < 3)你的代码将工作

不要相信我的话,这是给你的小提琴:

http://jsfiddle.net/n8exp/

于 2013-06-16T01:08:56.893 回答