Используйте return
, чтобы указать значение, которое функция должна выдать в качестве конечного результата. Когда интерпретатор достигает оператора return
, функция, содержащая этот оператор, немедленно завершает работу, и указанное значение возвращается в контекст, в котором была вызвана функция:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Функцию, возвращающую значение, можно эффективно рассматривать как содержащиеся в ней данные, подобно переменной:
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
Оператор return
без выражения завершает функцию и возвращает undefined
:
const myFunction = function() {
return;
}
myFunction();
> undefined
Поскольку ключевое слово return
сигнализирует об окончании функции, любой код, следующий за полученным return
, не выполняется:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
Кроме того, код, следующий за встретившимся оператором return
, может привести к предупреждению (но не ошибке) в консолях разработки некоторых браузеров:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Опять же, это относится только к оператору return
, встречающемуся во время выполнения функции, а не к любому коду, который следует за оператором return
последовательно:
const myFunction = function( myParameter ) {
if( myParameter === undefined ) {
return "This is the result.";
}
return "This is the alternate result.";
}
myFunction();
> "This is the result."
myFunction( true );
> "This is the alternate result."
«Короткое замыкание» функции с использованием раннего return
может обеспечить более краткий код, чем один оператор return
в конце функции. Например, следующая функция определяет, является ли переданное значение строкой, содержащей пять или более символов. Если переданное значение не является строковым литералом, код, подсчитывающий символы, не нужен, и функция может немедленно вернуть false
результат:
function myFunction( myString ) {
if( typeof myString !== "string" ) {
return false;
}
if( myString.length >= 5 ) {
return true;
} else {
return false;
}
}
myFunction( 100 );
> false
myFunction( "St" );
> false
myFunction( "String." );
> true
Выражения стрелочных функций уникальны тем, что ключевое слово return
подразумевается, когда тело стрелочной функции содержит одно выражение и не имеет блочного синтаксиса:
const myFunction = () => 2 + 2;
myFunction();
> 4
Если вы используете блочный синтаксис для определения тела функции стрелки, требуется явный return
, даже если тело функции содержит только одно выражение:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
Проверьте свое понимание
Для чего используется return
?