Why does this cause an infinite while loop?

infinite-loop, javascript, while-loop

Solution

Because you are not modifying `myAge` in any way. Your function is simply returning `myAge + 1`.

Try assigning the return value back to `myAge`:

while (myAge < 23){
    console.log("You're only 22");
    myAge = birthday(myAge);
}

Or alternatively, if you remove the function parameter, then the name `myAge` within the function will refer to the global variable, and you can modify it directly:

var myAge = 22
var birthday = function(){
    return (myAge = myAge + 1); 
    // or return myAge += 1;
    // or return ++myAge;
}

while (myAge < 23){
    console.log("You're only 22");
    birthday();        // note, no need to pass any parameters
}

Problem

I'm completely new to coding and have started learning JavaScript recently. I don't understand why the following code causes an infinite loop. Why does the `birthday(myAge)` function not work within the loop to make the condition `(myAge < 23)` false? ``` var myAge = 22 var birthday = function(myAge){ return(myAge + 1); } while (myAge < 23){ console.log("You're only 22"); birthday(myAge) } ```

Original source