Зачем нужен return в функциях
Перейти к содержимому

Зачем нужен return в функциях

return

Оператор return завершает выполнение текущей функции и возвращает её значение.

Исходный код данного интерактивного примера хранится в репозитории на GitHub. Если вы хотите поучаствовать в проекте интерактивных примеров, пожалуйста, склонируйте https://github.com/mdn/interactive-examples и отправьте нам запрос на включение ваших изменений.

Синтаксис

Описание

При вызове оператора return в функции её выполнение прекращается. Указанное значение возвращается в место вызова функции. Например, приведённая ниже функция возвращает возведённое в квадрат значение своего аргумента, x (где x – это число):

Если возвращаемое значение не указано, вместо него возвращается undefined .

Следующие выражения всегда прерывают выполнение функции:

Автоматическая расстановка точек с запятыми

На выражение return влияет автоматическая расстановка точек с запятыми (ASI). Разрыв строки не допускается между ключевым словом return и выражением.

трансформируется ASI в:

В консоли появится предупреждение «unreachable code after return statement».

Для того, чтобы избежать данной проблемы (предотвратить ASI), можно использовать скобки:

Помогите новичку понять: что такое «return» в функциях? Что он делает? Зачем он нужен?

значит так. . return возвращает результат выполнения функции.
например.
int plus5(int a)
<
return a+5;
>
в этой функции мы возвратили значение переданное функции (переменная а) но уже на 5 больше)
Можно возвращать любые типы данных.
Вот пример еще один, возвращающий произведение «а» и «в»
int proizvedenie(int a, int b)
<
int c;
c=a*b;
return c;
>

Использование:
int chislo;
chislo =proizvedenie(2,5);
таким образом функция вернет нам 10 и данное значение присвоится переменной chislo

«return 0» — на русский можно перевести как «вернуть ноль».
return завершает исполнение функции и возвращает свой параметр в качестве результата.

— и что? что с этого?

Как что? Тот, кто эту функцию вызвал получит результат 0.

Например, вы хотите написать во флеше порешатор квадратных уравнений.
За что вы возьмётесь?

Правильно, вы напишите функцию, в которую будете передавать a,b,c.

Внутри функции создавать переменную result(в ней будет храниться результат) . Но вот незадача: эта переменная существует только внутри функции, и получить этот результат снаружи никак нельзя.

function getX(a:Number, b:Number, c:Number)

//проводим арифметику с переданными числами

и по завершению выполнения функции переменная внутри неё удаляется, к ней нет доступа.

И что получается? Наша функция решает уравнение, но результат мы не получаем!

Как же получить результат?

Для этого есть оператор return.

function getX(a:Number, b:Number, c:Number)

//проводим арифметику с переданными числами

Что значит то, что мы вернули результат?

Теперь функция при её вызове в место вызова будет подставлять результат.

Если вывести её командой trace(), которая во флеше выводит то, что в скобках в окно output, то мы увидим там результат.

Почему не вывести результат сразу в функции? В некоторых ситуациях нужно провести какие-то действия над числом или строкой и вывести результат в другое место, которое, например, не доступно в месте описания функции. Или нужно получить результат в коду. Например, нужно принять массив, обработать его как надо и вернуть.

var array:Array = new Array();

var obrabotanniyArray:Array = processArray(array);

Если в функции вернуть этот массив, то он присвоится переменной obrabotanniyArray.

Оператор return (C)

Оператор return завершает выполнение функции и возвращает управление вызывающей функции. Выполнение возобновляется в вызывающей функции в точке сразу после вызова. Оператор return может возвращать значение, передавая его вызывающей функции. Дополнительные сведения см. в статье Тип возвращаемого значения.

Синтаксис

оператор-перехода:
return expressionopt ;

Значение параметра выражение, если оно указано, возвращается вызывающей функции. Если параметр выражение опущен, возвращаемое значение функции не определено. Параметр «выражение», если он присутствует, вычисляется и преобразуется к типу, возвращаемому функцией. Если оператор return содержит выражение в функциях, имеющих тип возвращаемого значения void , то компилятор выдает предупреждение, а выражение не вычисляется.

Если в определении функции оператор return не указан, то после выполнения последнего оператора вызванной функции управление автоматически возвращается вызывающей функции. В этом случае возвращаемое значение вызванной функции не определено. Если функция имеет тип возвращаемого значения, отличный от void , это считается серьезной ошибкой и компилятор выводит предупреждающее диагностическое сообщение. Если функция имеет тип возвращаемого значения void , то такое поведение приемлемо, но может считаться плохим стилем. Чтобы ваше намерение было понятным, используйте простой оператор return .

В качестве лучшей методики разработки рекомендуется всегда указывать тип возвращаемого значения для ваших функций. Если возвращаемое значение не требуется, объявите функцию как имеющую тип возвращаемого значения void . Если тип возвращаемого значения не указан, компилятор C предполагает, что по умолчанию используется тип возвращаемого значения int .

Многие программисты заключают аргумент выражения в выражении return в скобки. Однако использовать эти скобки в языке C необязательно.

Если компилятор обнаруживает операторы, размещенные после return , он может вывести предупреждающее диагностическое сообщение о недоступном для выполнения коде.

В функции main оператор return и выражение являются необязательными. То, что происходит с указанным возвращаемым значением, зависит от реализации. Только для Майкрософт:реализация C от Майкрософт возвращает значение выражения процессу, вызвавшему программу, например cmd.exe . Если выражение return не указано, среда выполнения C от Майкрософт возвращает значение, соответствующее успешному (0) или неудачному (ненулевое значение) выполнению.

Пример

В этом примере показана одна программа из нескольких частей. Она демонстрирует оператор return и использование его для завершения выполнения функции и, при необходимости, возврата какого-то значения.

Функция square возвращает квадрат своего аргумента, используя более широкий тип для избежания арифметической ошибки. Только для систем Майкрософт: в реализации C от Майкрософт тип long long достаточно велик, чтобы вмещать произведение двух значений int без переполнения.

Скобки вокруг выражения return в функции square вычисляются как часть выражения, и использовать их в операторе return не требуется.

Функция ratio возвращает частное двух int аргументов в виде значения double с плавающей запятой. Выражение return принудительно использует операцию с плавающей запятой путем приведения одного из операндов к типу double . В противном случае будет использоваться оператор целочисленного деления, а дробная часть будет потеряна.

Функция report_square вызывает square со значением параметра INT_MAX — самым большим целым числом со знаком, которое помещается в int . Результат типа long long сохраняется в squared , а затем выдается в выводе. Функция report_square имеет тип возвращаемого значения void , поэтому она не содержит выражения в операторе return .

Функция report_ratio вызывает ratio со значениями параметров 1 и INT_MAX . Результат типа double сохраняется в fraction , а затем выдается в выводе. Функция report_ratio имеет тип возвращаемого значения void , поэтому явно возвращать значение не требуется. Выполнение report_ratio не дает результата и не возвращает вызывающей функции никакого значения.

Функция main вызывает две функции: report_square и report_ratio . Поскольку report_square не принимает параметров и возвращает void , результат не присваивается переменной. Аналогичным образом функция report_ratio возвращает void , поэтому ее возвращаемое значение тоже не сохраняется. После вызова каждой из этих функций выполнение продолжается в следующем операторе. Затем main возвращает значение 0 (обычно свидетельствующее об успешном выполнении), чтобы завершить программу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *