【问题标题】:Writing a while loop / for loop for ingredients.为成分编写一个while循环/ for循环。
【发布时间】:2018-08-09 22:01:12
【问题描述】:

这是来自我正在学习的教科书。

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循环没有打印出“eggs”并在它的末尾打印“undefined”——而for循环很好?

他们不是都应该打印出同样的东西吗?

谢谢。

【问题讨论】:

  • 将您的日志更改为console.log([i, ingredients[i])); 可能会给您原因的线索。学习进行基本调试几乎比学习如何编写代码更重要

标签: javascript for-loop while-loop


【解决方案1】:

您正在递增i 在访问您的值之前,因此您从 1 而不是 0 开始,并以最后一个数组元素上方的一个结束,这将返回 undefined

所以你需要像这样运行它:

var i = 0;

while (i < ingredients.length) {
  console.log(ingredients[i]);
  i++; //Notice: After accessing the element
} 

【讨论】:

  • 谢谢。当我同时运行它们时,它现在是正确的。但是为什么在打印while循环后还有一个“未定义”呢?
  • JS 不会抛出 IndexOutOfBoundsException,它只是为大于或等于数组长度的索引返回 undefined
【解决方案2】:

这是我第一次尝试 javascript 问题。第一个答案要好得多,但这里试图帮助其他人查看循环、数组和变量。

While循环:

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);

【讨论】:

    【解决方案3】:

    删除 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 循环在每个循环结束时处理增量自动,这样就不会给你任何错误

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2010-12-03
      • 2018-03-05
      • 2014-11-05
      • 2014-09-03
      相关资源
      最近更新 更多