11

MDN claims that:

The comma operator evaluates both of its operands (from left to right) and returns the value of the second operand.

However, when I tried running <script> alert(1, 2); </script>, it shows a "1" instead of a "2".

Am I misunderstanding something?

Pacerier
  • 76,400
  • 86
  • 326
  • 602

3 Answers3

19

In the context of a function call, the comma is used to separate parameters from each other. So what you're doing is passing a second parameter to alert() which gets silently ignored.

What you want is possible this way:

 alert((1,2));

The extra brackets form a parameter on their own; inside them you can use the comma as an operator.

Pekka
  • 418,526
  • 129
  • 929
  • 1,058
6

Comma(,) is also a parameter separator.

Use alert((1,2)) instead.

Hassan Imam
  • 16,414
  • 3
  • 29
  • 41
MadBender
  • 1,408
  • 12
  • 15
2

When you use it like that, the comma is not an operator, it's a separator between the parameters in the call to the alert method.

If you put parentheses around them so that it's an expression, it will show you 2:

alert( (1,2) );
Guffa
  • 640,220
  • 96
  • 678
  • 956