繁体   English   中英

JavaScript函数不返回任何内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM