antonjs
antonjs

Reputation: 14318

The purpose of the comma operator in JavaScript (x, x1, x2, …, xn)

In JavaScript (x, x1, x2, …, xn) always returns xn.

In Python this code is called tuple and it returns different values.

My question is what is the purpose of this code in JavaScript? Do you have some practical example?

Upvotes: 13

Views: 570

Answers (3)

Alex Turpin
Alex Turpin

Reputation: 47776

The comma operator evaluates every operand but only returns the result of the last evaluation. It can be used to initialize multiple variable in a for loop.

var str = "Hello, World!";
for(var i = 0, len = str.length; i < len; i++)
    console.log(str.charAt(i));

Edit: As pointed out in the comments, this isn't a true example of the comma operator, this is just the var. You can see this page for actual examples.

Upvotes: 10

Delan Azabani
Delan Azabani

Reputation: 81384

http://en.wikipedia.org/wiki/Comma_operator

Like in C and C++, the comma operator evaluates both the left and right operands, returning the right operand. In terms of practical uses, a, b can be used in place of a ? b : b, as well as used as a limited way to fit multiple 'statements' into one statement, such as in the first or third parts of a for loop.

Note that declaring and/or defining multiple variables with var, separated by commas, is not a use of the comma operator, even though it uses the comma symbol. The comma operator evaluates to and forms an expression, which can be used as a value as part of a larger expression or statement. var is a complete statement type that takes the form

var name1 [= value1][, name2 [= value2][, ...]];

Upvotes: 6

wsanville
wsanville

Reputation: 37516

The MDC docs has a good example of a practical use for the comma operator:

If a is a 2-dimensional array with 10 elements on a side, the following code uses the comma operator to increment two variables at once. The code prints the values of the diagonal elements in the array:

for (var i = 0, j = 9; i <= 9; i++, j--)
  document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);

Upvotes: 2

Related Questions