我是编码的新手,最近开始学习JavaScript。我不明白为什么以下代码会导致无限循环。为什么birthday(myAge)函数在循环中不起作用以使条件(myAge < 23)为假?

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

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

最佳答案

因为您没有以任何方式修改myAge。您的函数只是返回myAge + 1

尝试将返回值分配回myAge:

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

或者,如果删除函数参数,则函数内的名称myAge将引用全局变量,您可以直接对其进行修改:
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
}

08-07 18:32