为什么我的for循环卡在第二个选项上?

时间:2019-10-07 16:44:12

标签: javascript

第一个项目-需要从嵌套数组中进行测验,但循环以某种方式卡在数组的第二个位置上,并且正在跳过第一个位置。也陷入无限循环-

var quiz = [ 
             [ "what color is the sky?" , "blue" ],
             [ "what color are most apples?", "red" ],
             [ "what color is coffee?" , "black" ]
];

var i;
for ( i = 0; i < 3; i++) {
  if (i = 0) { 
    var ans1 = prompt(quiz[0][0]);
  } else if (i = 1) {
    var ans2 = prompt(quiz[1][0]);
  } else {
    var ans3 = prompt(quiz[2][0]);
  }
}


document.write(ans1 + ans2 + ans3);

我的逻辑是,如果从一开始就i = 0,则应运行第一个提示,然后完成将i变量加1的循环,然后运行第二个提示,依此类推。

我尝试查找它,尝试了 while 循环,并尝试将最后一个 else 更改为 else if(i = 2)。 / p>

4 个答案:

答案 0 :(得分:3)

您需要将if (i = 0)更改为if (i == 0)。在Javascript和许多其他编程语言中,=表示赋值,而==表示比较。由于您尝试将i与一个整数进行比较,因此需要比较运算符,而不是赋值运算符。

答案 1 :(得分:1)

单个=是一项分配。您想要一个双方程式进行比较:

var quiz = [ 
             [ "what color is the sky?" , "blue" ],
             [ "what color are most apples?", "red" ],
             [ "what color is coffee?" , "black" ]
];

var i;
for ( i = 0; i < 3; i++) {
  if (i == 0) { 
    var ans1 = prompt(quiz[0][0]);
  } else if (i == 1) {
    var ans2 = prompt(quiz[1][0]);
  } else {
    var ans3 = prompt(quiz[2][0]);
  }
}


document.write(ans1 + ans2 + ans3);

答案 2 :(得分:1)

问题出在=运算符使用==或更佳的===,但是在这种情况下,您不需要循环或条件。

var quiz = [ 
             [ "what color is the sky?" , "blue" ],
             [ "what color are most apples?", "red" ],
             [ "what color is coffee?" , "black" ]
];

var ans1 = prompt(quiz[0][0]);
var ans2 = prompt(quiz[1][0]);
var ans3 = prompt(quiz[2][0]);

document.write(ans1 + ans2 + ans3);

答案 3 :(得分:0)

if (i = 0){
}

您正在为变量i分配值,而不是对其进行比较。使用“ ==”  比较if条件中的两个值。

if (i == 0){
    }