我只是在Javascript Recursion中提出了一些奇怪的行为。我的密码

var temp1 = function(maxLength,accNumber) {

    if(accNumber.length < maxLength)
    {
        accNumber = '0'+accNumber;
        temp1(maxLength,accNumber);
    }
    return accNumber;
};
console.log(temp1(5,"23"));


因此,在这里我期望输出为“ 00023”,但其输出为“ 023”,这是不期望的。

但是与while循环相同的代码我得到预期的输出。我不明白为什么。

var temp1 = function(maxLength,accNumber) {

    while(accNumber.length < maxLength)
    {
        accNumber = '0'+accNumber;
        temp1(maxLength,accNumber);
    }
    return accNumber;
};
console.log(temp1(5,"23"));


这给了我预期的输出“ 00023”。

最佳答案

实际上,您在return块内缺少if语句:



var temp1 = function(maxLength,accNumber) {

    if(accNumber.length < maxLength)
    {
        accNumber = '0'+accNumber;
        return temp1(maxLength,accNumber);
    }
    return accNumber;
};
console.log(temp1(5,"23")); 





因此,如果通过if条件,代码将不会返回任何内容,这说明了为什么使用023而不是00023的原因。

09-20 16:34