Возврат значения
Функция может вернуть результат, который будет передан в вызвавший её код.
Простейшим примером может служить функция сложения двух чисел:
function sum(a, b) {
return a + b;
}
let result = sum(1, 2);
alert( result ); // 3
Директива return
может находиться в любом месте тела функции. Как только выполнение доходит до этого места, функция останавливается, и значение возвращается в вызвавший её код (присваивается переменной result
выше).
Вызовов return
может быть несколько, например:
function checkAge(age) {
if (age > 18) {
return true;
} else {
return confirm('А родители разрешили?');
}
}
let age = prompt('Сколько вам лет?', 18);
if ( checkAge(age) ) {
alert( 'Доступ получен' );
} else {
alert( 'Доступ закрыт' );
}
Возможно использовать return
и без значения. Это приведёт к немедленному выходу из функции.
Например:
function showMovie(age) {
if ( !checkAge(age) ) {
return;
}
alert( "Вам показывается кино" ); // (*)
// ...
}
В коде выше, если checkAge(age)
вернёт false
, showMovie
не выполнит alert
.
Результат функции с пустым return
или без него – undefined
Если функция не возвращает значения, это всё равно, как если бы она возвращала undefined
:
function doNothing() { /* пусто */ }
alert( doNothing() === undefined ); // true
Пустой return
аналогичен return undefined
:
function doNothing() {
return;
}
alert( doNothing() === undefined ); // true
Никогда не добавляйте перевод строки между return
и его значением
Для длинного выражения в return
может быть заманчиво разместить его на нескольких отдельных строках, например так:
return
(some + long + expression + or + whatever * f(a) + f(b))
Код не выполнится, потому что интерпретатор JavaScript подставит точку с запятой после return
. Для него это будет выглядеть так:
return;
(some + long + expression + or + whatever * f(a) + f(b))
Таким образом, это фактически стало пустым return
.
Если мы хотим, чтобы возвращаемое выражение занимало несколько строк, нужно начать его на той же строке, что и return
. Или, хотя бы, поставить там открывающую скобку, вот так:
return (
some + long + expression
+ or +
whatever * f(a) + f(b)
)
И тогда всё сработает, как задумано.
Практика
Функция min(a, b)
важность: 1
Напишите функцию min(a,b)
, которая возвращает меньшее из чисел a
и b
.
Пример вызовов:
min(2, 5) == 2
min(3, -1) == -1
min(1, 1) == 1