为什么这会导致无限循环?

时间:2014-03-27 17:34:11

标签: javascript while-loop infinite-loop

我是编码新手,最近开始学习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)
}

2 个答案:

答案 0 :(得分:7)

因为您没有以任何方式修改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
}

答案 1 :(得分:2)

你需要以某种方式增加myAge,否则你将永远22岁......虽然这不是一件坏事。我想你发现了青春的泉源。

return (myAge += 1)