Pourquoi les extraits de code ci-dessous, tirés de cet article , produisent-ils des résultats différents en raison d'un seul changement dans le placement des accolades?
Lorsque l'accolade ouvrante {
est sur une nouvelle ligne, test()
retourne undefined
et "non - il s'est cassé: indéfini" s'affiche dans l'alerte.
function test()
{
return
{ /* <--- curly brace on new line */
javascript: "fantastic"
};
}
var r = test();
try {
alert(r.javascript); // does this work...?
} catch (e) {
alert('no - it broke: ' + typeof r);
}
Lorsque l'accolade est sur la même ligne que return
, test()
renvoie un objet et "fantastique" est alerté.
function test()
{
return { /* <---- curly brace on same line */
javascript: "fantastic"
};
}
var r = test();
try {
alert(r.javascript); // does this work...?
} catch (e) {
alert('no - it broke: ' + typeof r);
}
return
est légèrement différente de celle des autres endroits, et un saut de ligne "signifie plus" à cet endroit qu'il ne le ferait "à mi-chemin".