tutorial script español ejemplos definicion curso caracteristicas javascript comma-operator

español - ¿Qué hace una coma en las expresiones de JavaScript?



javascript pdf (5)

El operador de coma evalúa sus dos operandos (de izquierda a derecha) y devuelve el valor del second operando.

https://stackoverflow.com/a/3561056/5934465

¡Debería ser así!

El operador de coma evalúa cada uno de sus operandos (de izquierda a derecha) y devuelve el valor del last operando.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

Si uso:

1.09 * 1; // returns "1.09"

Pero si uso:

1,09 * 1; // returns "9"

Sé que 1,09 no es un número.

¿Qué hace la coma en el último fragmento de código?

Más ejemplos

if (0,9) alert("ok"); // alert if (9,0) alert("ok"); // don''t alert

alert(1); alert(2); alert(3); // 3 alerts alert(1), alert(2), alert(3); // 3 alerts too

alert("2", foo = function (param) { alert(param) }, foo(''1'') ) foo(''3''); // alerts 1, 2 and 3



Agregar / modificar propiedades a un objeto y devolverlo en la misma línea es un posible caso de uso:

console.log( ((x) => (o = {biggerCond: r => r >= x}, o.r5 = Array.from(window.crypto.getRandomValues(new Uint16Array(5))), o.isAnyBigger = o.r5.some(o.biggerCond), o.bigger = o.isAnyBigger ? o.r5.filter(o.biggerCond) : [x], o ) )(5e4) ); // Example // { // bigger: [58414, 56500, 63397], // isAnyBigger: true, // isBiggerCond: r => r >= x, // r5: [58414, 12015, 56500, 63397, 43861] // }

La función anónima anterior devuelve un objeto con valores aleatorios mayores que el valor de entrada o, si no hay ninguno, con el valor de entrada en sí mismo en una matriz contenida en la propiedad bigger .

Sigue siendo azúcar sintáctica (como las funciones de flecha ), pero acorta el número de líneas ... Me pregunto si algunos minificadores de JS detectan y ajustan el código de forma similar automáticamente. Ejecútelo en su consola:

((x)=>(o={biggerCond:r=>r>=x},o.r5=Array.from(window.crypto.getRandomValues(new Uint16Array(5))),o.isAnyBigger=o.r5.some(o.biggerCond),o.bigger=o.isAnyBigger?o.r5.filter(o.biggerCond):[x],o))(5e4)


Algunas más alertas para considerar:

alert((0, 9)); alert((9, 0)); alert(("foo", "bar"));

Además, eche un vistazo a la consola Firebug si desea probar esto de forma interactiva.