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?
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.
Comma(,)
is also a parameter separator.
Use alert((1,2))
instead.
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) );
来源:https://stackoverflow.com/questions/5580596/comma-operator-returns-first-value-instead-of-second-in-argument-list