我只是在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
的原因。