Она может находиться в любом месте функции. Как только до нее доходит управление — функция завершается и значение передается обратно.
Вызовов return может быть и несколько, например:
| function checkAge(age) {
|
| if (age > 18) {
|
| return confirm('Родители разрешили?');
|
| }
|
| var age = prompt('Ваш возраст?');
|
|
|
| if (checkAge(age)) {
|
| alert('Доступ разрешен');
|
| } else {
|
| alert('В доступе отказано');
|
Важность: 4
Следующая функция возвращает true, если параметр age больше 18.
В ином случае она задает вопрос confirm и возвращает его результат.
| function checkAge(age) {
|
| if (age > 18) {
|
| // ...
|
| return confirm('Родители разрешили?');
|
Будет ли эта функция работать как-то иначе, если убрать else?
| function checkAge(age) {
|
| if (age > 18) {
|
| // ...
|
| return confirm('Родители разрешили?');
|
Есть ли хоть одно отличие в поведении этого варианта?
Решение
[Открыть задачу в новом окне]
Важность: 4
Следующая функция возвращает true, если параметр age больше 18.
В ином случае она задает вопрос confirm и возвращает его результат.
| function checkAge(age) {
|
| if (age > 18) {
|
| return confirm('Родители разрешили?');
|
| }
|
Перепишите функцию, чтобы она делала то же самое, но без if, в одну строку.
Сделайте два варианта функции checkAge:
- Используя оператор '?'
- Используя оператор ||
Решение
[Открыть задачу в новом окне]
Директива return может также использоваться без значения, чтобы прекратить выполнение и выйти из функции.
Например:
| function showMovie(age) {
|
| if (!checkAge(age)) {
|
|
|
| alert("Фильм не для всех"); // (*)
|
В коде выше, если сработал if, то строка (*) и весь код под ней никогда не выполнится, так как return завершает выполнение функции.
Значение функции без return и с пустым return
В случае, когда функция не вернула значение или return был без аргументов, считается что она вернула undefined:
| function doNothing() { /* пусто */ }
|
|
|
| alert( doNothing() ); // undefined
|
Обратите внимание, никакой ошибки нет. Просто возвращается undefined.
Ещё пример, на этот раз с return без аргумента:
| function doNothing() {
|
| return;
|
| alert( doNothing() === undefined ); // true
|