43 votes

La définition de plusieurs variables en une ligne est-elle valide en javascript ? (var x=y='valeur' ;)

Ceci est valable en php :

$x=$y='value';

En conséquence, $x et $y prendront la valeur 'value'.

Est-ce valable en javascript ?

var x=y='value';

Je l'ai testé dans la console de chrome et cela a fonctionné comme prévu, mais je voulais juste vérifier avant de commencer à l'utiliser.

77voto

user278064 Points 5193

Cela ne fonctionne que si le var y comme cela a été le cas précédemment défini sinon y sera mondial .

Dans ce cas, vous avez intérêt à le faire :

var x, y;
x = y = 'value';

Chaînage des affectations

Un autre anti-modèle qui crée des globaux implicites consiste à enchaîner des affectations dans le cadre d'un fichier déclaration var. Dans l'extrait suivant, a est local mais b devient global, ce qui est probablement pas ce que vous vouliez faire :

// antipattern, do not use
function foo() {
   var a = b = 0;
   // ...
}

Si vous vous demandez pourquoi cela se produit, c'est à cause de l'évaluation de droite à gauche. Premièrement, l'expression b = 0 est évalué et dans ce cas, b n'est pas déclaré. La valeur de retour de cette expression est 0 et il est assigné à la nouvelle variable locale déclarée avec var a . En Autrement dit, c'est comme si vous aviez tapé :

var a = (b = 0);

Si vous avez déjà déclaré les variables, l'enchaînement des affectations est correct et ne crée pas d'erreur. globaux inattendus . Exemple :

function foo() {
   var a, b;
   // ...
   a = b = 0; // both local
}

" JavaScript Patterns ", par Stoyan Stefanov (O'Reilly). Copyright 2010 Yahoo !, Inc., 9780596806750."

12voto

Steven Lu Points 8021

Je suis presque sûr que la forme la plus lisible est celle qui n'a pas encore été évoquée :

let x = 0, y = 0

8voto

Dykam Points 5343

Pour éviter que le y ne devienne une variable globale, utilisez ce qui suit :

var x, y = x = 'value';

Apparemment, les déclarations sont simplement évaluées de gauche à droite.

1voto

tonycoupland Points 1614

Oui, c'est valable en Javascript.

Cependant, après avoir googlé le problème, ceci Question sur Stack Overflow explique quelques mises en garde, à utiliser avec prudence.

0voto

maguri Points 183

Lorsque les variables ont des valeurs différentes, vous pouvez facilement écrire :

var x = 0,
    y = 1,
    ...
    z = 2;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X