If I use:
1.09 * 1; // returns \"1.09\"
But if I use:
1,09 * 1; // returns \"9\"
I know that 1,09 isn\'t
Have a look here - the comma stands for multiple expressions / statements. For example in your code you could use a line like this:
var a=0, b=0, c=0;
This would declare all three variables without writing:
var a=0;
var b=0;
var c=0;
Hope that helps.
Some more to consider:
console.log((0, 9));
console.log((9, 0));
console.log(("foo", "bar"));
Adding/modifying properties to an object and returning it in the same line is a possible use-case:
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]
// }
The above anonymous function returns an object with random values bigger than the input value or, if there's none, with the input value itself in an array in contained in the bigger
property.
It is still syntactic sugar (like arrow functions), but it does shorten the number of lines... I wonder if some JS minifiers detect and adjust the code in a similar way automatically. Run it in your console:
((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)
The comma operator evaluates both of its operands (from left to right) and returns the value of the second operand.
Source: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
For example, the expression 1,2,3,4,5
evaluates to 5
. Obviously the comma operator is useful only for operations with side-effects.
console.log(1,2,3,4,5);
console.log((1,2,3,4,5));
The comma operator evaluates both of its operands (from left to right) and returns the value of thesecond
operand.
https://stackoverflow.com/a/3561056/5934465
It should be like this!
The comma operator evaluates each of its operands (from left to right) and returns the value of the
last
operand.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator