无法理解if / for循环的一部分

时间:2017-03-16 12:50:09

标签: javascript

通过一本名为“head first javascript programming”的书并进入这个练习示例,但我不太了解它的某些部分。我应该这样做,以便在控制台中显示测试数量和最高分。这是代码。

var scores = [60,58,34,69,46,41,50,50,55,64,31,53,60,52,51,66,57,55,58,54,52,55,52,61,54,48,44,52,44,51,54,69,51,61,18,44];
var output;
var highScore = 0;



for(var i = 0; i < scores.length; i++){
  output = "Bubble solution #" + i + " score: " + scores[i];
  console.log(output);
  if (scores[i] > highScore){
    highScore = scores[i];
  }
}

console.log("Bubbles tests: " + scores.length);
console.log("Highest bubble score: " + highScore);

现在这段代码确实有效,但我不明白这两行:

scores[i] > highScore
highScore = scores[i]

3 个答案:

答案 0 :(得分:4)

目标是知道什么分数最高。

  if (scores[i] > highScore){
    highScore = scores[i];
  }

因此,在迭代每个分数时。我们检查当前的迭代分数是否高于highScore。如果是这种情况,我们会使用当前分数更新高分。

  

迭代1

scores[i] = 60
highscore = 0
--> highScore = 60
  

迭代2

scores[i] = 58
highscore = 60
 --> highscore = 60

答案 1 :(得分:1)

if (scores[i] > highScore){
    highScore = scores[i];
  }

这是存储最高分的逻辑。

在每次迭代的每个迭代中,HighScore将与当前迭代中的score进行比较。

如果当前分数高于HighScore,则分数将分配给HighScore变量。

答案 2 :(得分:1)

使用for循环遍历列表中的所有元素。

一开始,您将highScore初始化为0。

在浏览列表时,如果当前元素值大于存储在highScore中的值,则将highScore分配给该元素值,因此在循环结束时,存储在highScore变量中的值将是分数列表中的最大值。

实施例。 在第一次循环迭代中它将是

if(60 > 0) // which is true
    highScore = 60; // so assign value 60 to variable highscore

第二次迭代

if(58 > 60) // which is not true 
   highScore = 58; // so the value of highScore will stay 60

第3次迭代

if(34 > 60) // which is not true
    highScore = 34; // so the value of highScore is still 60

第4次迭代:

if(69 > 60) // which is true
     highScore = 69; // so the value of highScore becomes 69

。 。 。 等等到列表的末尾。

基本上它会从得分列表中获得最大值,并将其保存到highScore变量中。

所以最后,highScore的价值将是69。