我目前正在学习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]);
}
答案 0 :(得分:6)
答案 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)
,您的代码将正常工作
不要相信我的话,这是你的小提琴: