为什么我会得到;“未定义”;在JavaScript中
请您帮忙,为什么我得到这个为什么我会得到;“未定义”;在JavaScript中,javascript,Javascript,请您帮忙,为什么我得到这个未定义的值而不是返回a var a=0; var m=888; 函数七(m,a){ 如果(m==0){ 文件。填写(“8的金额为“+a+””; 返回a; }否则{ 如果(数学下限(m%10)==8){ a++; 七(数学楼层(m/10),a); }否则{ 七(数学楼层(m/10),a); } } } 写(“在“+m+”+”中是“+”+Seven(m,a))函数需要在else语句中返回一些内容。像这样: function sevens(m, a){
未定义的
值而不是返回a
var a=0;
var m=888;
函数七(m,a){
如果(m==0){
文件。填写(“8的金额为“+a+”
”;
返回a;
}否则{
如果(数学下限(m%10)==8){
a++;
七(数学楼层(m/10),a);
}否则{
七(数学楼层(m/10),a);
}
}
}
写(“在“+m+”+”中是“+”+Seven(m,a))
函数需要在else
语句中返回一些内容。像这样:
function sevens(m, a){
if(m == 0){
document.write("Amount of 8's is "+a+"<br>");
return a;
}else{
if(Math.floor(m % 10) == 8){
a++;
return sevens(Math.floor(m / 10), a);
}else{
return sevens(Math.floor(m / 10), a);
}
}
}
函数七(m,a){
如果(m==0){
文件。填写(“8的金额为“+a+”
”;
返回a;
}否则{
如果(数学下限(m%10)==8){
a++;
返回七(数学楼层(m/10),a);
}否则{
返回七(数学楼层(m/10),a);
}
}
}
在执行递归时,您不能返回函数调用
if(Math.floor(m % 10) == 8){
a++;
return sevens(Math.floor(m / 10), a);
}else{
return sevens(Math.floor(m / 10), a);
}
如果不返回函数中的任何内容
,默认情况下它将返回未定义的
。并非所有情况下都如此。这取决于您调用特定函数的方式。也许您可以稍微更改一下逻辑,因为如果在then部分中函数以返回完成,则不需要else部分
另一个更改是暂停Math.floor
,并与余数操作符%
结合使用。它总是返回一个整数值
第三部分是将seven
的调用移到if语句之外,因为它无论如何都会被调用
var a=0,
m=888;
功能七(m,a){
如果(m==0){
文件。填写(“8的金额为“+a+”
”;
返回;//退出函数,rest
}//函数的另一部分是
如果(m%10==8){/%-->int
a++;
}
返回七(数学楼层(m/10),a);//返回调用结果
}
写(“在“+m+”+”中是“+”+Seven(m,a))代码>您忘记了返回,否则,我对sevens函数进行了一点重构,您可以在代码段中运行
var a=0;
var m=888;
功能七(m,a){
如果(m==0){
文件。填写(“8的金额为“+a+”
”;
返回a;
}
如果(数学楼层(m%10)==8){
a+=1;
}
返回七(数学楼层(m/10),a);
}
写(“在“+m+”+”中是“+”+Seven(m,a))代码>哦,我现在明白了,我必须在递归前面添加“return”,谢谢。