[英]JavaScript Function Not Returning Anything
我做了一个函数,可以减少两个数字之间的分数关系。 它可以完美工作,但问题是它不会返回该值。 我已经尝试了各种方法,例如声明一个新变量然后返回它,但是它不起作用。 我还添加了几个console.logs来查看它是否在某个特定位置停止,但是什么也没有,只是没有返回任何东西。
这是我的代码:
function reduceFraction(n, d) {
var numerator = n;
var denominator = d;
if (n % 7 === 0 && d % 7 === 0) {
numerator /= 7;
denominator /= 7;
console.log('Divided by 7');
reduceFraction(numerator, denominator);
} else {
if (n % 5 === 0 && d % 5 === 0) {
numerator /= 5;
denominator /= 5;
console.log('Divided by 5');
reduceFraction(numerator, denominator);
} else {
if (n % 3 === 0 && d % 3 === 0) {
numerator /= 3;
denominator /= 3;
console.log('Divided by 3');
reduceFraction(numerator, denominator);
} else {
if (n % 2 === 0 && d % 2 === 0) {
numerator /= 2;
denominator /= 2;
console.log('Divided by 2');
reduceFraction(numerator, denominator);
} else {
console.log('Was not divided by anything');
var reduced = numerator + "/" + denominator;
return reduced; //console.log(numerator + "/" + denominator); logs 1/18
}
}
}
}
}
reduceFraction(3, 54);
我不知道是否嵌套一堆if语句必须对此做任何事情,但这是(我能想到的)目前唯一的方法,它将减少一小部分...预先感谢。
在递归函数中,您也需要return
:
更换所有
reduceFraction(numerator, denominator);
像这样 :
return reduceFraction(numerator, denominator);
你必须退还它
function reduceFraction(n, d) {
var numerator = n;
var denominator = d;
if (n % 7 === 0 && d % 7 === 0) {
numerator /= 7;
denominator /= 7;
console.log('Divided by 7');
return reduceFraction(numerator, denominator);
} else {
if (n % 5 === 0 && d % 5 === 0) {
numerator /= 5;
denominator /= 5;
console.log('Divided by 5');
return reduceFraction(numerator, denominator);
} else {
if (n % 3 === 0 && d % 3 === 0) {
numerator /= 3;
denominator /= 3;
console.log('Divided by 3');
return reduceFraction(numerator, denominator);
} else {
if (n % 2 === 0 && d % 2 === 0) {
numerator /= 2;
denominator /= 2;
console.log('Divided by 2');
return reduceFraction(numerator, denominator);
} else {
console.log('Was not divided by anything');
var reduced = numerator + "/" + denominator;
return reduced; //console.log(numerator + "/" + denominator); logs 1/18
}
}
}
}
}
return reduceFraction(3, 54);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.