Usa return
para especificar el valor que la función debe producir como resultado final. Cuando el intérprete alcanza una sentencia return
, la función que
contiene esa declaración finaliza de inmediato y el valor especificado se devuelve al
contexto en el que se llamó a la función:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Una función que muestra un valor puede tratarse de manera efectiva como los datos que contiene, de manera similar a una variable:
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
Una declaración return
sin una expresión finaliza la función y muestra undefined
:
const myFunction = function() {
return;
}
myFunction();
> undefined
Debido a que la palabra clave return
indica el final de una función, no se ejecuta ningún código que siga a un return
encontrado:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
Además, el código que sigue a una declaración return
encontrada puede generar una advertencia (pero no un error) en las consolas de desarrollo de algunos navegadores:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Nuevamente, esto solo se aplica a una declaración return
que se encuentra durante la ejecución de la función, no a cualquier código que siga a una declaración return
de manera secuencial:
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."
El “circuito en cortocircuito” de una función que usa un return
anticipado puede permitir un código más conciso que una sola declaración return
al final de una función. Por ejemplo, la siguiente función determina si un valor que se pasa es una string que contiene cinco o más caracteres. Si el valor que se pasa no es un literal de string, el código que cuenta los caracteres no es necesario y la función puede mostrar un resultado false
de inmediato:
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
Las expresiones de función de flecha son únicas porque la palabra clave return
está implícita cuando el cuerpo de una función de flecha contiene una sola expresión y no hay sintaxis de bloque:
const myFunction = () => 2 + 2;
myFunction();
> 4
Si usas la sintaxis de bloque para definir el cuerpo de la función flecha, se requiere un return
explícito, incluso si el cuerpo de la función solo contiene una sola expresión:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
Verifica tus conocimientos
¿Para qué se usa return
?