SVP restez à l'écart à partir de ce modèle d'affectation, même si vous souhaitez que toutes les variables pointent vers le même objet.
En fait, seule la première sera une déclaration de variable , les autres sont simplement des assignations à des identificateurs non déclarés éventuellement !
L'attribution d'une valeur à un identificateur non déclaré (alias assignation non déclarée) est fortement déconseillée car, si l'identificateur n'est pas trouvé sur la chaîne de portées, une variable GLOBAL sera créée. Par exemple:
function test() {
// We intend these to be local variables of 'test'.
var foo = bar = baz = xxx = 5;
typeof foo; // "number", while inside 'test'.
}
test();
// Testing in the global scope. test's variables no longer exist.
typeof foo; // "undefined", As desired, but,
typeof bar; // "number", BAD!, leaked to the global scope.
typeof baz; // "number"
typeof xxx; // "number"
De plus, le mode ECMAScript 5ème Strict interdit ce type d'affectation. En mode strict, une affectation faite à un identificateur non déclaré entraînera une exception TypeError
, pour empêcher les globales implicites.
En revanche, voici ce que nous voyons si elle est correctement écrit:
function test() {
// We correctly declare these to be local variables inside 'test'.
var foo, bar, baz, xxx;
foo = bar = baz = xxx = 5;
}
test();
// Testing in the global scope. test's variables no longer exist.
typeof foo; // "undefined"
typeof bar; // "undefined"
typeof baz; // "undefined"
typeof xxx; // "undefined"
Bonuspoint pour ne pas utiliser 'new Array()' – DanMan
j'avais des problèmes, comme prévu. Merci pour l'explication! – FFish
bonuspoint pour montrer comment cela fonctionne;) – jcolebrand