En JavaScript, il est possible de déclarer plusieurs variables comme ceci:
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;
... ou comme ça:
var variable1 = "Hello World!",
variable2 = "Testing...",
variable3 = 42;
Une méthode est-elle meilleure / plus rapide que l'autre?
javascript
variables
coding-style
performance
declaration
Steve Harrison
la source
la source
Réponses:
La première façon est plus facile à entretenir. Chaque déclaration est une instruction unique sur une seule ligne, vous pouvez donc facilement ajouter, supprimer et réorganiser les déclarations.
Avec la deuxième façon, il est ennuyeux de supprimer la première ou la dernière déclaration car elles contiennent le
var
mot-clé et le point-virgule. Et chaque fois que vous ajoutez une nouvelle déclaration, vous devez remplacer le point-virgule de l'ancienne ligne par une virgule.la source
Outre la maintenabilité, la première façon élimine la possibilité de création de variables globales accidentelles:
Alors que la deuxième façon est moins indulgente:
la source
var variable1 = "Hello World!", variable2 = "Testing...", variable3 = 42;
. Un manquant,
va planter, mais je conviens que c'est risquéPossible Fatal Error
si je manque un coma, hourra pour moi!Il est courant d'utiliser une
var
instruction par étendue pour l'organisation. La façon dont toutes les «étendues» suivent un modèle similaire, ce qui rend le code plus lisible. De plus, le moteur les «hisse» tous au sommet de toute façon. Donc, garder vos déclarations ensemble imite ce qui se passera réellement de plus près.la source
var
déclaration. l'exact opposé est vrai. voir la documentation et cet exempleC'est beaucoup plus lisible lorsque vous le faites de cette façon:
Mais prend moins d'espace et de lignes de code de cette façon:
Il peut être idéal pour économiser de l'espace, mais laissez les compresseurs JavaScript le gérer pour vous.
la source
Peut-être comme ça
Sauf lors du changement de la première ou de la dernière variable, il est facile à maintenir et à lire.
la source
C'est juste une question de préférence personnelle. Il n'y a aucune différence entre ces deux façons, à l'exception de quelques octets enregistrés avec le second formulaire si vous supprimez l'espace blanc.
la source
ECMAScript6 a introduit une affectation de déstructuration qui fonctionne plutôt bien:
[a, b] = [1, 2]
a
sera égal1
etb
sera égal2
.la source
let [aVar, bVar, cVar, xVar, yVar, zVar] = [10, 20, 30, 40, 50];
Donc, personnellement, je ne le recommande pas.est plus lisible que:
Mais ils font la même chose.
la source
var<space>
, son<space><space><space><space>
var<space>
ouvar<tab>
contre<tab>
. Toujours largement théorique.Utilisez l' affectation ES6 Destructuring : il décompactera les valeurs des tableaux ou les propriétés des objets dans des variables distinctes.
la source
Ma seule utilisation, pourtant essentielle, de la virgule est dans une boucle for:
Je suis allé ici pour vérifier si cela est OK en JavaScript.
Même en le voyant fonctionner, il restait à savoir si n est local à la fonction.
Cela vérifie, n est local:
Pendant un moment, je n'étais pas sûr de passer d'une langue à l'autre.
la source
Bien que les deux soient valides, l'utilisation de la seconde décourage les développeurs inexpérimentés de placer des instructions var partout et de provoquer des problèmes de levage. S'il n'y a qu'une seule var par fonction, en haut de la fonction, il est plus facile de déboguer le code dans son ensemble. Cela peut signifier que les lignes où les variables sont déclarées ne sont pas aussi explicites que certains le souhaiteront.
Je pense que le compromis en vaut la peine, si cela signifie sevrer un développeur de la suppression de «var» partout où il le souhaite.
Les gens peuvent se plaindre de JSLint, je le fais aussi, mais une grande partie n'est pas destinée à résoudre les problèmes de langage, mais à corriger les mauvaises habitudes des codeurs et donc à prévenir les problèmes dans le code qu'ils écrivent. Par conséquent:
"Dans les langages à portée de bloc, il est généralement recommandé de déclarer les variables sur le site de première utilisation. Mais comme JavaScript n'a pas de portée de bloc, il est plus judicieux de déclarer toutes les variables d'une fonction en haut de la fonction. recommandé d'utiliser une seule instruction var par fonction. " - http://www.jslint.com/lint.html#scope
la source
Je pense que c'est une question de préférence personnelle. Je préfère le faire de la manière suivante:
la source
Une autre raison pour éviter la version à instruction unique ( var unique ) est le débogage. Si une exception est levée dans un des lignes d'affectation, la trace de pile n'affiche qu'une seule ligne.
Si vous aviez 10 variables définies avec la syntaxe virgule, vous n'avez aucun moyen de savoir directement laquelle était la coupable.
La version de déclaration individuelle ne souffre pas de cette ambiguïté.
la source
Le concept de "Cohésion sur Couplage" peut être appliqué plus généralement que de simples objets / modules / fonctions. Il peut également servir dans cette situation:
Le deuxième exemple suggéré par l'OP a couplé toutes les variables dans la même instruction, ce qui rend impossible de prendre une des lignes et de la déplacer ailleurs sans casser des trucs (couplage élevé). Le premier exemple qu'il a donné rend les affectations variables indépendantes les unes des autres (couplage faible).
"Un faible couplage est souvent le signe d'un système informatique bien structuré et d'une bonne conception, et lorsqu'il est combiné à une cohésion élevée, il soutient les objectifs généraux de haute lisibilité et maintenabilité."
http://en.wikipedia.org/wiki/Coupling_(computer_programming)
Alors choisissez le premier.
la source
Un vieux post, je sais, mais pour ajouter un petit détail de perspective pour les autres Googleurs:
Le problème de maintenabilité peut être assez facilement résolu avec un peu de mise en forme, comme tel.
J'utilise cette mise en forme uniquement par préférence personnelle. Je saute ce format pour les déclarations simples, bien sûr, ou où cela résume simplement les travaux.
la source
Je crois qu'avant de commencer à utiliser ES6, l'approche avec une seule déclaration var n'était ni bonne ni mauvaise (dans le cas où vous avez des linters et
'use strict'
. C'était vraiment une préférence gustative. Mais maintenant les choses ont changé pour moi. Mes pensées sont en faveur de la déclaration multiligne :Nous avons maintenant deux nouveaux types de variables et nous sommes
var
devenus obsolètes. Il est recommandé de l'utiliserconst
partout où vous en avez vraiment besoinlet
. Donc, très souvent, votre code contiendra des déclarations de variables avec une affectation au milieu du code, et en raison de la portée des blocs, vous déplacerez assez souvent des variables entre les blocs en cas de petits changements. Je pense qu'il est plus pratique de le faire avec des déclarations multilignes.La syntaxe ES6 est devenue plus diversifiée, nous avons obtenu des destructeurs, des chaînes de modèle, des fonctions fléchées et des affectations facultatives. Lorsque vous utilisez fortement toutes ces fonctionnalités avec des déclarations var simples, cela nuit à la lisibilité.
la source
Je pense que la première façon (plusieurs vars) est la meilleure, car vous pouvez sinon vous retrouver avec cela (à partir d'une application qui utilise Knockout), qui est difficile à lire à mon avis:
la source