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 delsecond
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
El operador de coma evalúa sus dos operandos (de izquierda a derecha) y devuelve el valor del segundo operando.
Fuente: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Por ejemplo, la expresión 1,2,3,4,5
evalúa a 5
. Obviamente, el operador de coma es útil solo para operaciones con efectos secundarios.
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.
Eche un vistazo https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator - la coma representa múltiples expresiones / declaraciones. Por ejemplo, en tu código puedes usar una línea como esta:
var a=0, b=0, c=0;
Esto declararía las tres variables sin escribir:
var a=0;
var b=0;
var c=0;
Espero que ayude.