Одним из важных аспектов работы функций является их способность возвращать значения, обеспечивая взаимодействие с вызывающим кодом.
В данном уроке мы глубже погрузимся в концепцию возврата значений из функций, рассмотрим различные сценарии использования оператора return и освоим важные практики для эффективного написания функционального кода.
Функция в JavaScript может возвращать результат, который передается в вызывающий ее код. Примером может служить функция сложения двух чисел:
function sum(a, b) {
return a + b;
}
let result = sum(1, 2);
alert(result); // Выведет: 3
Директива return может находиться в любом месте тела функции. Как только выполнение доходит до этого места, функция завершает свое выполнение, и значение возвращается в вызывающий код (присваивается переменной result в приведенном примере).
Функция может содержать несколько вызовов return. Например, в следующей функции, если возраст age не соответствует условию, будет предложено подтверждение:
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 прекращается до строки с комментарием (*).
Важно отметить, что если функция не возвращает значения явно, это равнозначно возвращению undefined:
function doNothing() { /* пусто */ }
alert(doNothing() === undefined); // true
Также в тексте отмечается важность избегать добавления перевода строки между return и возвращаемым значением. В противном случае, интерпретатор JavaScript может автоматически добавить точку с запятой после return, что сделает его эквивалентным return; и вернет undefined. Если требуется использовать несколько строк, старайтесь начинать выражение на той же строке, что и return, либо используйте открывающую скобку.
В некоторых сценариях, когда функция выполняет определенные действия, но не возвращает конкретное значение, можно воспользоваться return без указания значения. Это особенно удобно, когда функция служит для выполнения побочных эффектов, а не для генерации результата.
function logMessage(message) {
console.log(`Log: ${message}`);
return; // не возвращает значения
}
Использование return без значения позволяет преждевременно завершать выполнение функции. Если после return следует код, он не выполнится. Это удобно, например, при проверке условий и возвращении результата в случае их выполнения.
function checkPermission(user) {
if (!user.isAdmin) {
return "Доступ запрещен"; // завершение функции, если пользователь не является администратором
}
// код, который не выполнится для обычных пользователей
}
Важное замечание:При использовании return с пустым значением или без него важно помнить, что это может привести к трудностям при отладке кода. Возвращаемое значение undefined может быть воспринято как отсутствие явного результата, и это следует учитывать при взаимодействии с вызывающим кодом. Рекомендуется явно указывать return undefined;, если необходимо вернуть именно undefined.
При наличии нескольких выражений return в функции будет выполнено только первое из них, после чего функция завершит свое выполнение. Это следует учитывать при проектировании функций и выборе оптимального пути выполнения.
function checkNumber(num) {
if (num > 0) {
return "Положительное число";
}
return "Отрицательное или ноль";
}
Это важное замечание подчеркивает необходимость четкости и предсказуемости в использовании return в функциях, чтобы избежать путаницы и ошибок в коде.
В этом уроке мы подробно изучили механизм возврата значений из функций в JavaScript. Мы рассмотрели простые примеры использования оператора return, обратили внимание на возможность множественных return в функции и даже на сценарии, когда return применяется без явного значения.
Важным аспектом оказалось замечание о том, что при использовании return без значения следует явно указывать возвращение undefined, что способствует более ясному пониманию кода и избеганию потенциальных трудностей при отладке.
Будьте первым