【问题标题】:Why is this while() loop coming up as an Infinite Loop? [closed]为什么这个 while() 循环会以无限循环的形式出现? [关闭]
【发布时间】:2017-05-17 07:26:10
【问题描述】:

只是想弄清楚为什么下面的代码是一个无限循环?

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

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

我想做的只是不断要求用户输入一个有效的数字,直到她输入为止。

【问题讨论】:

    标签: javascript function loops while-loop infinite


    【解决方案1】:

    因为您没有在循环内更新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));
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-07-27
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        • 1970-01-01
        相关资源
        最近更新 更多