为什么这个while()循环会成为无限循环?

时间:2017-01-03 08:44:52

标签: javascript function loops while-loop infinite

试图弄清楚为什么以下代码是无限循环?

var x = prompt("enter a number");

while (isNaN(x)){
    prompt("please enter a number");
}

我想做的就是不断要求用户输入有效的号码,直到她这样做。

2 个答案:

答案 0 :(得分:3)

因为您没有在循环中更新x

var x = prompt("enter a number");

while (isNaN(x)){
    x = prompt("please enter a number"); // <====
}

请注意,这是do-while循环有用的地方之一:

var x;
do {
    x = prompt("please enter a number");
}
while (isNaN(x));

另请注意,x将是字符串isNaN将使用它,因为它首先要做的是尝试将其参数转换为数字(如果它不是一个数字)。但请注意,x仍然是一个字符串,因此(例如)+可能无法达到预期效果。因此,您可以使用一元+Number()parseIntparseFloat对其进行转换。 (有关这些选项的详细信息,请参阅this answer。)示例:

var x;
do {
    x = +prompt("please enter a number");
//      ^
}
while (isNaN(x));

答案 1 :(得分:1)

在脚本的第一行,您要求用户输入,并将此输入分配给x(假设他们输入&#39; a&#39;而不是数字)。然后,检查x是否为数字(它不是)。如果它不是数字,则再次要求用户输入。 但是,该输入永远不会(重新)分配给x,而x的值仍然是&#39; a&#39;。 prompt - 命令绝不与变量x耦合。在你的循环中尝试这个

x = prompt("please enter a number");
相关问题