Utilisation de virgules ou de points-virgule dans le JavaScript?

avec le code suivant:

var fn = function () {
    var x = 'x',
    y = 'y';
    this.a = 'a',
    this.b = 'b',
    this.c = 'c';
    this.d = 'd',
    this.e = 'e';   
}

Vous pouvez voir qu'il y a un mélange des deux.

Quel serait l'avantage d'utiliser l'un ou l'autre?

ma compréhension est que le point-virgule doit mettre fin à la déclaration. Et la virgule doit être utilisée pour lier plusieurs déclarations.

est-il donc raisonnable de dire qu'avec cet exemple, il ne devrait y avoir que deux points-virgule?

var fn = function () {
    var x = 'x',
    y = 'y';
    this.a = 'a',
    this.b = 'b',
    this.c = 'c',
    this.d = 'd',
    this.e = 'e';   
}
53
demandé sur The_asMan 2013-03-18 23:57:07

4 réponses

de L'opérateur virgule est un opérateur qui peut être utilisé à l'intérieur d'une expression. Il est utilisé pour séparer plusieurs expressions différentes et a le sens de "évaluer toutes les expressions suivantes, puis produire la valeur de l'expression finale."Par exemple:

a = 1, b = 2, c = 3

signifie "évaluer a = 1 , puis b = 2 , puis c = 3 , puis d'évaluer à la valeur de l'expression c = 3 .

Le point-virgule n'est pas un opérateur et ne peut être utilisé à l'intérieur d'une expression. Il est utilisé dans le cadre de la syntaxe JavaScript pour marquer la fin d'une expression qui est traité comme une déclaration. Par exemple, vous pourriez dire

a = 1; b = 2; c = 3;

et cela signifierait" il y a trois énoncés à faire dans l'ordre: évaluer la première expression comme premier énoncé, la deuxième expression comme deuxième énoncé, et la troisième expression comme troisième énoncé."

dans ce les deux ne sont pas complètement interchangeables. Par exemple, vous ne pouvez pas écrire

var a = 1, var b = 2;

parce que var a = 1 et var b = 2 sont des énoncés, pas des expressions, et ne peuvent donc pas être séparés par des virgules. Vous devez utiliser un point-virgule ici.

(une note: vous pourriez dire

var a = 1, b = 2;

parce que le langage permet spécifiquement cette utilisation de virgule comme partie de la syntaxe d'une déclaration. Ici, la virgule n'est pas utilisé comme un opérateur.)

de même, vous ne pouvez pas dire

a = (b = 1; c = 2);

, Car ici le côté droit de l'expression doit être une expression, pas une déclaration, et ; est utilisé pour séparer les états. Le point-virgule intérieure devrait être une virgule à la place. (Puis, encore une fois, ce code est assez maladroit et inhabituel en premier lieu, donc vous ne devriez probablement pas faire ça du tout!)

D'un style en perspective, l'opérateur virgule est rarement utilisé et est assez obscur pour qu'il puisse déclencher des codeurs JavaScript raisonnablement compétents. En conséquence, je suggère fortement de ne pas l'utiliser et de suivre les conventions établies dans JavaScript sur l'utilisation des points-virgule pour terminer les énoncés, même s'il serait équivalent et légal sur le plan syntaxique d'utiliser des virgules pour séparer les expressions qui sont chacune utilisées comme énoncés.

Espérons que cette aide!

69
répondu templatetypedef 2013-03-18 20:02:52

Non, virgule a trois sens.

  1. avec des déclarations variables, il vous permet juste d'omettre le var avant chaque variable.
  2. avec des expressions, " l'opérateur comma évalue ses deux opérandes (de gauche à droite) et renvoie la valeur de la seconde opérande."
  3. arguments séparés dans les déclarations de fonction et les appels de fonction, mais cela devrait être évident pour chaque programmeur.

exemple pour deux;

alert((2,3)); //3

notez que la virgule dans la déclaration var n'est pas l'opérateur virgule, car elle n'existe pas dans une expression. Il s'agit plutôt d'un caractère spécial dans les déclarations var pour combiner plusieurs d'entre eux en un seul. Pratiquement, la virgule se comporte presque comme l'opérateur virgule.

MDN

Quand l'opérateur virgule utile?

27
répondu gdoron 2017-05-23 12:10:31

ça n'a vraiment pas d'importance. Il n'y a aucun avantage de vitesse à utiliser des virgules autant que je sache.

il suffit d'utiliser tout ce que vous préférez :)

C'est ce que JavaScript - les bonnes parties a à dire:

l'opérateur virgule peut conduire à des expressions excessivement délicates. Il peut masquez également certaines erreurs de programmation.

JSLint s'attend à voir virgule utilisée comme séparateur, mais pas comme opérateur (sauf dans les parties d'initialisation et d'incrémentation du pour la déclaration). Il ne s'attendait pas à voir élidés éléments dans le tableau littéral. Les virgules supplémentaires ne doivent pas être utilisées. Une virgule ne doit pas apparaître après le dernier élément d'un tableau littéral ou objet littéral parce que il peut être mal interprété par certains navigateurs.

10
répondu Jivings 2013-03-18 19:59:30

il est préférable de toujours rester conforme à la convention. C'est soit des semi-colons, soit des virgules, et je suis sûr que vous préféreriez utiliser des semi-colons plutôt que des virgules partout.

Il n'y a pas de gain de vitesse, donc il n'y a rien à craindre.

4
répondu Mohamad Ali Baydoun 2013-03-18 19:59:42