Use return
para especificar o valor que a função precisa produzir como resultado final.
resultado. Quando o intérprete chega a uma instrução return
, a função que
contém a instrução termina imediatamente e o valor especificado é retornado ao
o contexto em que a função foi chamada:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Uma função que retorna um valor pode ser tratada efetivamente como os dados que ela contém, semelhante a uma variável:
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
Uma instrução return
sem uma expressão encerra a função e retorna.
undefined
:
const myFunction = function() {
return;
}
myFunction();
> undefined
Como a palavra-chave return
indica o fim de uma função, qualquer código que
segue um return
encontrado não é executado:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
Além disso, o código após uma instrução return
encontrada pode resultar em uma
aviso (mas não um erro) nos navegadores consoles de desenvolvimento:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Novamente, isso só se aplica a uma instrução return
encontrada durante
execução da função, não qualquer código que siga uma instrução return
sequencialmente:
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."
"Curto-circuito" uma função que usa um return
inicial pode permitir uma
código do que uma única instrução return
no final de uma função. Por exemplo, o
seguinte função determina se um valor passado é uma string que contém cinco
ou mais caracteres. Se o valor passado não for um literal de string, o código que
conta que os caracteres são desnecessários, e a função pode retornar um false
imediatamente:
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
Expressões de função de seta
são únicos, já que a palavra-chave return
está implícita quando um corpo de função de seta
contém uma única expressão e nenhuma sintaxe de bloco:
const myFunction = () => 2 + 2;
myFunction();
> 4
Se você usar a sintaxe de bloco para definir o corpo da arrow function, uma return
explícita
é obrigatório, mesmo que o corpo da função contenha apenas uma expressão:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
Teste seu conhecimento
Para que o return
é usado?