JavaScript

Объясните return в языках программирования.

Не понимаю зачем этот оператор нужен. Во всех учебниках пишут, что он «вызывает», но не могу понять что это значит в данном контексте.
Буду рад, если объясните с примером что это.
return возвращает какое то значение из метода
НМ
Николай Морозов
12 579
Лучший ответ
Бейбарыс Бейбітулы Что значит «возвращает»?
Что можно объяснить тупому, который путает "вызывает" и "возвращает"?!
Правильно! НИ-ЧЕ-ГО!!!
Значит программирование не ваше, раз не понимаете зачем функция должна возвращать результат
Артём Евдан
Артём Евдан
90 009
return прекращает выполнение функции и, возможно, передает какое-то значение через ее имя.
Павел Парашин
Павел Парашин
55 246
Не знаю как в других языках, а в JS return возвращает указанное значение, которое может быть результатом работы этой функции. На этом функция завершает свою работу.
АХ
Андрей Холин
58 422
>> Не понимаю зачем этот оператор нужен.
Ключевое слово которое выполняет операции завершающие текущий вызов.
AK
Aleksandr Kazlanzhi
12 592
return не вызывает, а, грубо говоря, возвращает программу на ступень выше с переданным ему аргументом (или без него).
Визуально это выглядит как-то так (условный псевдокод, похожий на Си):
int main(int argc, char** argv) { // основная функция программы, которая вернет по завершению операционной системе целочисленную переменную (int)
    int a; // объявляем переменную a
    int b;
    myfuncA(); // вызываем функцию myfuncA
    a = myfuncB(40,2); // вызываем функцию myfuncB с аргументами 40 и 2
    // переменная a здесь будет равна 42
    myfuncC();
    a = myfuncD(40,1);
    // переменная a здесь будет равна 82
    b = myfuncD(40,2);
    // переменная b здесь будет равна 42
    return 1;
}

void myfuncA(int x, int y) { // функция на вход получает два аргумента
    int r = x + y; // функция объявляет переменную r и инициализирует ее значением сумму аргументов x и y, но ничего не возвращает и данная переменная уничтожается при выходе из данной функции
}

int myfuncB(int x, int y) {
    return x + y; // функция при выходе из нее возвращает сумму аргументов x и y
}

void myfuncC(int x, int y) {
    int r = x + y; // функция объявляет переменную r и инициализирует ее значением сумму аргументов x и y, но ничего не возвращает и данная переменная уничтожается при выходе из данной функции
    return; // абсолютно бессмысленный вызов return.. т. е. данная функция абсолютно идентична myfuncB()
}

int myfuncD(int x, int y) {
    int r = x + y; // объявляем переменную r и инициализируем ее суммой аргументов x и y
    if(r % 2 == 0) { // если r делится на два без остатка (четное число)...
        return r; // выходим из функции, возвращая значение переменной r
    } else { // иначе (если число нечетное)...
        r *= 2; // умножаем значение переменной на два и...
    }
    return r; // выходим из функции, возвращая новое значение переменной r
}

Надеюсь это будет сколько-нибудь понятно.. =)
ВС
Вася Стефу
2 761
Объясню примером из жизни.

Для начало необходимо понять суть предназначения функций, более простым языком функция это просто работник, выполняющий твои указания. Теперь представь что у тебя есть наемный работник, его работа заключается в том чтобы получать два числа и складывать их, работника зовут к примеру addSum, ты как его начальник можешь вызвать, и сказать ему эй addSum на тебе два числа 7 и 5 рассчитай мне сумму этих чисел, работник получает от тебя эти данные, и начинает с ними работать, работник их складывает, и возвращает тебе сумму в качестве результата, а именно 12. Теперь представь что было бы, если твой работник не возвращал результата тебе обратно, какой толк от этого работника? Тоже самое с функциями в программировании, от функции не будет пользы, если она не возвращает результата, той функции которая её вызывала, поэтому в функциях используется оператор return в качестве возврата результата функции. Но есть функции с типом void которые ничего не возвращают.

Ещё один пример, есть люди которые занимаются переводом иностранных документов, в общем это переводчики, так вот переводчикам дают исходный текст на иностранном языке, а переводчик переводит его на русский язык, и отдаёт обратно заказчику, переводчик может выступать в качестве функции, тебе как заказчику не нужно знать о том как переводчик будет его переводить, при помощи google, самостоятельно или при помощи друга, тебе важен лишь результат работы переводчика (функции), как только переводчик закончил свою работу, он тебе возвращает переведенный документ с иностранного языка на русский язык. И опять представь что было бы, если переводчик ничего не возвращал тебе, от него не было бы пользы никакой.

Чтобы более подробно понимать об этих терминах, лучше стоит начать обучаться программировать на типизированных языках, чем на динамических.

Также оператор return используется в качестве немедленного выхода из функции, когда результат уже получен и не требуется дальнейших операций, return приводит к немедленному возврату и выходу из функции.
FA
Farhat Assarov
406
Евгений Голицын так если любая функция без return бесполезна, тогда почему она не встроенна в функционал любой функции, какой тогда смысл разработчиками было ее отделять?