这是我正在研究的一本教科书。
var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder", "chocolate chips", "bananas"];
// Write a while loop that prints out the contents of ingredients:
这是我的代码:
var i = 0;
while (i < ingredients.length) {
i++
console.log(ingredients[i]);
}
结果:
milk
flour
sugar
baking soda
baking powder
chocolate chips
bananas
undefined
第二个问题:
写一个for循环,打印出配料的内容:
我的代码:
for (i = 0; i < ingredients.length; i++) {
console.log(ingredients[i]);
}
这将打印出所需的所有内容。
为什么while循环不能打印出“鸡蛋”并在其末尾打印“未定义”-而for循环很好呢?
他们俩都不应该打印相同的东西吗?
谢谢。
答案 0 :(得分:6)
您在访问值前先增加i
,因此您以1而不是0开头,并以最后一个数组元素上方的一个结束,并返回undefined
。
所以您需要像这样运行它:
var i = 0;
while (i < ingredients.length) {
console.log(ingredients[i]);
i++; //Notice: After accessing the element
}
答案 1 :(得分:1)
这是我第一次遇到JavaScript问题。第一个答案是更好的方法,但是这是一种尝试来帮助他人查看循环,数组和变量的尝试。
同时循环:
var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder", "chocolate chips", "bananas"];
var i =0
while(i < ingredients.length){
console.log(ingredients[i]);
i++;
}
执行While循环:
var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder", "chocolate chips", "bananas"];
var i=0;
do{
console.log(ingredients[i]);
i++
}
while (i<ingredients.length);
答案 2 :(得分:1)
删除i ++并将其放置在console.log(ingredients [i]);
下方的行上样品:
var i = 0;
while (i < ingredients.length) {
console.log(ingredients[i]);
i++;
}
在控制台可以打印出第一个索引中找到的数据之前,i ++正在递增。 它从0开始,但在打印该索引之前变为1。
由于相同的原因,发生未定义。因为i ++在console.log之上,所以它超出了数组范围。当i ++位于console.log下方时,它将返回到循环的顶部,并在尝试将其打印出来之前检查它是否在数组的范围内。
for循环在每个循环结束时负责自动增量,因此不会给您任何错误