为什么我的Do While循环返回undefined?

时间:2013-06-16 00:58:45

标签: javascript

我目前正在学习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]);
}

2 个答案:

答案 0 :(得分:6)

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

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

Fiddle

答案 1 :(得分:1)

你的语法错误,当你使用do{ }while()时,虽然部分没有任何支撑,但是没有必要。

Do..while blocks视为“先拍,稍后再问”

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

您获得未定义输出的原因是您尝试访问未定义的元素。

JavaScript数组是基于零的,这意味着如果你有一个 4个元素的数组,那么你的索引将从 0到3

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

并且你要求javascript获取不存在的名称[4]的值,并且最终得到undefined控制台输出。

如何解决这个问题?

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

while(i < 4)while(i < 3),您的代码将正常工作

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

http://jsfiddle.net/n8exp/