为什么这个while循环退出但执行内部代码?

时间:2014-03-22 12:19:02

标签: javascript while-loop nan

如果我输入一个数字,每当我输入字符串" end"它应该在不执行代码的情况下退出while循环。

但如果我进入"结束"我得到了总数:NaN结束了,为什么?

我希望得到我输入的数字总数。

var i = 1;
var totale = 0;
var index = Array();
var domanda = 0;

while (!isNaN(domanda)) {
    domanda = prompt("Write a number, the total so far is: " + totale);
    index[i] = Number(domanda);
    totale += index[i];
    i++;
}

document.writeln("total: " + totale);
document.writeln("ended");

2 个答案:

答案 0 :(得分:0)

输入后立即检查NaN。

var i=1;
var totale = 0;
var index = Array();
var domanda = 0;

while (true) {
   domanda = prompt("Write a number, the total so far is: "+totale);
      if(isNaN(domanda)) {
         break;   
      }
   index[i]=Number(domanda);
   totale += index[i];
   i++;
}

document.writeln("total: " + totale);

document.writeln("ended");

答案 1 :(得分:0)

您的while循环会检查domanda是否不是数字。 然后,您让用户输入domanda的新值,该值可能是 end 然后,您将该值添加到总计中 - 如果total不是数字,则domanda不是数字。

您的while循环只能在以while开头的行中停止。如果条件在循环体中的某处发生变化,那么在下次检查循环条件之前,该迭代仍将完全执行,并且循环将被中止。

在此处更改此设置的一种简单方法是在 domanda更改后再添加一个检查:

while (!isNaN(domanda)) {
    domanda = prompt("Write a number, the total so far is: "+totale);
    if (isNaN(domanda)) {
        break;
    }
    ...