nishkaush nishkaush -4 years ago 96
Javascript Question

Why is this while() loop coming up as an Infinite Loop?

Just trying to figure out why the following code is an infinite loop?

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

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


All I wanted to do was to keep asking the user to enter a valid number until she does so.

Answer Source

Because you're not updating x within the loop:

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

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

Note that this is one of those places a do-while loop is useful:

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

Also note that x will be a string. isNaN will work with it, though, because the first thing it does is try to convert its argument to a number if it's not one. But note that x remains a string and so (for instance) + may not do what you expect. So you might convert it using a unary +, Number(), parseInt, or parseFloat. (See this answer for details on those options.) Example:

var x;
do {
    x = +prompt("please enter a number");
//      ^
}
while (isNaN(x));
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download