Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the point of wrapping JavaScript statements in parentheses?

I have discovered that wrapping different statements in parentheses will return the last one:

(34892,47691876297,2000)                => 2000
('test',73,document.createElement('p')) => <p></p>

And I also found out that all the statements are executed anyway:

(console.log('test'), console.log('test2'), console.log('test3'), 6)

Will log:

test
test2
test3

And the result will be 6.

However, I've also found that some statements can't be used:

(throw new Error(), 10)         => SyntaxError: Unexpected token throw
(if (1) console.log('test'), 5) => SyntaxError: Unexpected token if

So, what is the point of this parenthesis-comma notation? You could easily execute all the statements and then use the last statement's value. What is this for? Am I using it incorrectly?

like image 384
tckmn Avatar asked Dec 27 '22 04:12

tckmn


2 Answers

That is the comma operator :)

It lets you evaluate expressions from left to right, returning the last operand's result (which, in your case, isn't stored anywhere, and is perfectly valid).

Reference:

  • http://www.ecma-international.org/ecma-262/5.1/#sec-11.14
  • https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comma_Operator
like image 139
Ian Avatar answered Feb 09 '23 01:02

Ian


The most obvious point of this is to allow for multiple expressions in a for loop:

for (let x=3, y=6; x < 10; x++, y++) {...}
                           ^^^^^^^^

That's the comma operator, the same operator that also allows for the examples you provided

return (x, y)
like image 34
G Gallegos Avatar answered Feb 08 '23 23:02

G Gallegos