Вызов функции из оператора if внутри функции - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть функция с оператором 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);

Как я уже сказал, для меня все выглядит логично, но я полагаю, что это не так, поскольку я получаю 'undefined'.

Ожидаемый результат должен быть:"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 голосов
/ 16 ноября 2018

Вам нужно что-то сделать с возвращенными значениями, например, записать их в журнал:

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;
}
0 голосов
/ 16 ноября 2018

Значение, которое возвращается из function 1 и function 2, не используется или не сохраняется function 3.Попробуйте следующий код:

function printAnyRange(rangeStart, rangeStop) {

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

это должно решить проблему.

0 голосов
/ 16 ноября 2018

Вы ничего не возвращаете. Захват результатов функций и возврат этой переменной.

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...