En wtfjs, encontré que el siguiente es javascript legal.JavaScript "tupla" notación: ¿cuál es su punto?
",,," == Array((null,'cool',false,NaN,4)); // true
El argumento (null,'cool',false,NaN,4)
se parece a una tupla para mí, pero JavaScript no tiene tuplas!
Algunas pruebas rápidas en mi consola javascript producen lo siguiente.
var t = (null,'cool',false,NaN,4); // t = 4
(null,'cool',false,NaN,4) === 4; // true
(alert('hello'), 42); // shows the alert and returns 42
Parece que se comporten exactamente como una lista separada por punto y coma ;
de declaraciones, simplemente devolviendo el valor de la última declaración.
¿Hay alguna referencia en alguna parte que describa esta sintaxis y su semántica? ¿Por qué existe, es decir, cuándo debería usarse?
Es el operador de coma: http://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/ – Lepidosteus
El operador de coma también se puede (ab) utilizar para ejecutar una serie de funciones dentro de una rama ternaria, ya que devolverá el resultado de la última declaración de todos modos: 'var a = isTrue? (b = f (c), g (b)): (b = g (c), f (b)) '. Rara vez es inteligente, pero a veces es útil si se prefiere un código muy conciso sobre la legibilidad, o para la depuración rápida. – Fx32
Esto se llama una 'expresión' en JavaScript, esto no es simplemente un efecto del operador de coma aunque juega una pequeña parte; Esta expresión se resuelve debido al operador de coma. Puede establecer un valor para cualquier variable mutable de cualquier expresión evaluada. Incluso si esa expresión no está definida. – Relic