从函数内部的if语句调用函数

时间:2018-11-16 00:46:22

标签: javascript arrays function if-statement ecmascript-6

我有一个带有if语句的函数,无论是否为真,该函数又应调用外部函数。我得到的结果是“未定义”。你能指出我正确的方向吗?

功能1:

function printRange(rangeStart, rangeStop) {
    let summa = [];

    for (i = rangeStart; i <= rangeStop; i++) {
        summa.push(i);
    }
    let result2 = summa.join();
    return result2;
}

功能2:

function printRangeReversed(rangeStart, rangeStop) {
    let summa = [];

    for (i = rangeStart; i >= rangeStop; i--) {
        summa.push(i);
    }
    let result3 = summa.join();
    return result3;
}

功能3:

function printAnyRange(rangeStart, rangeStop) {

    if (rangeStart < rangeStop) {
        printRange(rangeStart, rangeStop);
    } else {
        printRangeReversed(rangeStart, rangeStop);
    }
    return;
}

调用函数:printAnyRange(21, 45);

正如我所说,这一切对我来说似乎合乎逻辑,但我猜那不是因为我得到了“未定义”。

预期结果应为:"21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45"

致谢。

3 个答案:

答案 0 :(得分:3)

您什么都不会退货。捕获函数的结果并返回该变量。

function printRange(rangeStart, rangeStop) {
    let summa = [];

    for (i = rangeStart; i <= rangeStop; i++) {
        summa.push(i);
    }
    let result2 = summa.join();
    return result2;
}

function printRangeReversed(rangeStart, rangeStop) {
    let summa = [];

    for (i = rangeStart; i >= rangeStop; i--) {
        summa.push(i);
    }
    let result3 = summa.join();
    return result3;
}

function printAnyRange(rangeStart, rangeStop) {
    let result = null;

    if (rangeStart < rangeStop) result = printRange(rangeStart, rangeStop);
    else result = printRangeReversed(rangeStart, rangeStop);
        
    return result;
}

console.log(printAnyRange(1,5));
console.log(printAnyRange(5,1));

答案 1 :(得分:2)

function test(element) { var objectID = element.id; ... } function 1返回的值未被function 2使用或存储。尝试以下代码:

function 3

这应该可以解决问题。

答案 2 :(得分:1)

您需要对返回的值进行处理,例如记录它们:

function printAnyRange(rangeStart, rangeStop) {

    if (rangeStart < rangeStop) {
        console.log(printRange(rangeStart, rangeStop));
    } else {
        console.log(printRangeReversed(rangeStart, rangeStop));
    }
    return;
}

或从主函数返回它们:

function printAnyRange(rangeStart, rangeStop) {

    if (rangeStart < rangeStop) {
        result = printRange(rangeStart, rangeStop);
    } else {
        result = printRangeReversed(rangeStart, rangeStop);
    }
    return result;
}