为什么我在JavaScript中获得“undefined”
问题描述:
您能否请帮助,为什么我得到undefined
值而不是返回a
?为什么我在JavaScript中获得“undefined”
var a = 0;
var m = 888;
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++;
sevens(Math.floor(m/10), a);
} else {
sevens(Math.floor(m/10), a);
}
}
}
document.write("in "+m + " " + "it is" + " " + sevens(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);
}
}
}
答
你是不是returning
的function call
虽然做了recursion
,
if(Math.floor(m % 10) == 8){
a++;
return sevens(Math.floor(m/10), a);
}else{
return sevens(Math.floor(m/10), a);
}
如果你没有一个function
内return
什么,默认情况下它会返回undefined
。并非所有情况下。这取决于您调用特定功能的方式。
答
也许你改变了一下逻辑,因为如果在那部分功能是用return
来完成的,你不需要其他部分。
其他更改将暂停Math.floor
结合其余运算符%
。它总是返回一个整数值。
第三部分是将sevens
的呼叫移到if语句之外,因为它无论如何称为。
var a = 0,
m = 888;
function sevens(m, a) {
if (m == 0) {
document.write("Amount of 8's is " + a + "<br>");
return a; // exit function, rest
} // of function is else part
if (m % 10 == 8) { // % --> int
a++;
}
return sevens(Math.floor(m/10), a); // return result of call
}
document.write("in " + m + " " + "it is" + " " + sevens(m, a));
答
你忘了回报,否则,我重构一点点的七人榄球赛功能,您可以在代码段运行。
var a = 0;
var m = 888;
function sevens(m, a) {
if (m === 0) {
document.write("Amount of 8's is " + a + "<br>");
return a;
}
if (Math.floor(m % 10) === 8) {
a += 1;
}
return sevens(Math.floor(m/10), a);
}
document.write("in " + m + " " + "it is" + " " + sevens(m, a));
哦,我现在看到的,我要补充的递归前面的“回报”,谢谢。 –