Le mot-clé return en JavaScript
Le mot-clé return est souvent découvert dans un seul contexte : retourner une valeur depuis une fonction. Il remplit pourtant deux missions distinctes qu’il convient de bien distinguer.
Retourner une valeur
C’est l’usage le plus courant. Une fonction effectue un calcul et transmet son résultat à l’instruction qui l’a appelée :
javascript
function additionner(a, b) {
return a + b;
}
const resultat = additionner(3, 5);
console.log(resultat); // 8
Sans return, la fonction exécute bien les instructions mais ne transmet aucune valeur : elle retourne undefined.
Stopper l’exécution d’une fonction
return peut également être utilisé seul, sans valeur, uniquement pour interrompre l’exécution d’une fonction à un moment précis. C’est l’usage qui a été vu dans le chapitre sur la géolocalisation :
javascript
function get_positionGPS() {
if (!navigator.geolocation) {
resultat.innerHTML = "La géolocalisation n'est pas supportée.";
return; // la fonction s'arrête ici
}
// cette ligne n'est atteinte que si geolocation existe
navigator.geolocation.getCurrentPosition(...);
}
Cette technique est appelée retour anticipé (early return). Elle évite d’imbriquer le reste du code dans un bloc else et rend la fonction plus lisible.
Sans return, le code continue
Il est important de comprendre que sans return, JavaScript continue d’exécuter les lignes suivantes même si une condition n’est pas remplie. Dans l’exemple ci-dessus, sans le return, l’appel à getCurrentPosition serait exécuté même en l’absence de géolocalisation, provoquant une erreur.
Une fonction ne peut retourner qu’une seule valeur
Dès que JavaScript rencontre un return, l’exécution de la fonction s’arrête immédiatement. Tout code placé après est ignoré :
javascript
function exemple() {
return 42;
console.log("Cette ligne n'est jamais exécutée.");
}
Pour retourner plusieurs valeurs, il est possible de les regrouper dans un tableau ou un objet :
javascript
function minMax(tableau) {
return {
min: Math.min(...tableau),
max: Math.max(...tableau)
};
}
const { min, max } = minMax([3, 1, 8, 2]);
