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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.