Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 3 · Exercice de TD

Deux fonctions de même nom

Instructions de contrôle et fonctions · niveau 2

Énoncé

Le fichier suivant porte l'extension .js : Node.js l'exécute comme un script non strict. Qu'affiche-t-il ? Que se passerait-il avec l'extension .mjs ? Comment écrire une seule fonction etiquette qui gère les deux cas ?


// Fichier .js : script non strict, sans module.
function etiquette(titre) {
  return `[${titre}]`;
}
function etiquette(titre, prix) {
  return `[${titre} — ${prix} €]`;
}
console.log(etiquette("CSS"));
console.log(etiquette("CSS", 27));

Corrigé


[CSS — undefined €]
[CSS — 27 €]

Dans un script non strict, la seconde déclaration remplace la première : les deux appels exécutent la version à deux paramètres, et le premier écrit « undefined ». Avec l'extension .mjs, le fichier est un module : la double déclaration est une SyntaxError, et rien ne s'exécute. Une seule fonction suffit, avec un paramètre facultatif :


function etiquette(titre, prix) {
  return prix === undefined ? `[${titre}]` : `[${titre} — ${prix} €]`;
}

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →