La palabra clave de retorno

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?

Especificar el resultado final de una función
Mostrar el código al inicio de la función