¿Uso de comas versus puntos y comas en JavaScript?
syntax comma (4)
Dado el siguiente código
var fn = function () {
var x = ''x'',
y = ''y'';
this.a = ''a'',
this.b = ''b'',
this.c = ''c'';
this.d = ''d'',
this.e = ''e'';
}
Se puede ver que hay una mezcla de ambos.
¿Cuál sería el beneficio de usar uno u otro?
Mi entendimiento es que el punto y coma es para terminar la declaración. Y la coma se debe utilizar para unir varias declaraciones.
Entonces, ¿es seguro decir que con este ejemplo solo debería haber dos puntos y coma?
var fn = function () {
var x = ''x'',
y = ''y'';
this.a = ''a'',
this.b = ''b'',
this.c = ''c'',
this.d = ''d'',
this.e = ''e'';
}
El operador de coma es un operador que se puede utilizar dentro de una expresión. Se utiliza para separar varias expresiones diferentes y tiene el significado de "evaluar todas las expresiones siguientes y luego generar el valor de la expresión final". Por ejemplo:
a = 1, b = 2, c = 3
significa "evaluar a = 1
, luego b = 2
, luego c = 3
, luego evaluar el valor de la expresión c = 3
.
El punto y coma no es un operador y no se puede utilizar dentro de una expresión. Se utiliza como parte de la sintaxis de JavaScript para marcar el final de una expresión que se trata como una declaración. Por ejemplo, podrías decir
a = 1; b = 2; c = 3;
Y esto significaría que "hay tres declaraciones que hacer en secuencia: evaluar la primera expresión como la primera instrucción, la segunda expresión como la segunda instrucción y la tercera expresión como la tercera declaración".
En este sentido, los dos no son completamente intercambiables. Por ejemplo, no puedes escribir
var a = 1, var b = 2;
Debido a que var a = 1
y var b = 2
son declaraciones, no expresiones, y por lo tanto no se pueden separar con comas. Tendrías que usar un punto y coma aquí.
(Una nota: se podría decir
var a = 1, b = 2;
porque el lenguaje permite específicamente este uso de coma como parte de la sintaxis de una declaración. Aquí, la coma no se utiliza como operador.)
Del mismo modo, no puedes decir
a = (b = 1; c = 2);
Porque aquí el lado derecho de la expresión debe ser una expresión, no una declaración, y ;
Se utiliza para separar declaraciones. El punto y coma interior tendría que ser una coma en su lugar. (Entonces, de nuevo, este código es bastante extraño e inusual en primer lugar, ¡así que probablemente no deberías hacer esto en absoluto!)
Desde una perspectiva estilística, el operador de coma rara vez se utiliza y es lo suficientemente oscuro como para que pueda hacer tropezar a los codificadores de JavaScript razonablemente competentes. Como resultado, sugeriría encarecidamente no usarlo y, en cambio, seguir las convenciones establecidas en JavaScript sobre el uso de punto y coma para terminar las declaraciones, incluso si sería equivalente y sintácticamente legal usar comas para separar las expresiones que se utilizan como declaraciones.
¡Espero que esto ayude!
Es mejor permanecer siempre coherente con la convención. Es todos los puntos y coma o todas las comas, y estoy seguro de que preferiría usar los puntos y coma en lugar de comas en todas partes.
No hay ganancia de velocidad, así que no hay nada de qué preocuparse.
No, la coma tiene tres significados.
- Con declaraciones de variables, simplemente le permite omitir la
var
antes de cada variable. - Con expresiones, "El operador de coma evalúa sus dos operandos (de izquierda a derecha) y devuelve el valor del segundo operando".
- Separe los argumentos en las declaraciones de funciones y las llamadas a funciones, pero eso debería ser obvio para todos los programadores.
Ejemplo para dos;
alert((2,3)); //3
Tenga en cuenta que la coma en la sentencia var no es el operador de coma, porque no existe dentro de una expresión. Más bien, es un carácter especial en las declaraciones var para combinar varios de ellos en uno. Sin embargo, en la práctica, esa coma se comporta casi igual que el operador de coma.
¿Cuándo es útil el operador de coma?
Realmente no importa. No hay un beneficio de velocidad para usar comas por lo que sé.
Solo usa lo que prefieras :)
Esto es lo que JavaScript - The Good Parts tiene que decir:
El operador de coma puede llevar a expresiones excesivamente difíciles. También puede enmascarar algunos errores de programación.
JSLint espera ver la coma utilizada como separador, pero no como operador (excepto en las partes de inicialización e incremento de la instrucción for). No espera ver elementos elidales en matrices literales. No se deben utilizar comas adicionales. Una coma no debe aparecer después del último elemento de una matriz literal o literal de objeto, ya que algunos navegadores pueden malinterpretarla.