Оператор кома (,)

Оператор кома (,) обчислює кожний свій операнд (зліва направо) і повертає значення останнього операнду. Це дозволяє створити складений вираз, де обчислюється більше одного виразу, а остаточним значенням складеного виразу є значення крайнього правого з його виразів. Зазвичай, його використовують, щоб передати декілька параметрів у цикл for.

Синтаксис

expr1, expr2, expr3...

Параметри

expr1, expr2, expr3...
Один або більше виразів, останній з яких буде повернений в якості значення складеного виразу.

Опис

Ви можете скористатись оператором кома, коли бажаєте використати декілька виразів там, де вимагається лише один. Найбільш поширене використання цього оператора - це подання декількох параметрів у цикл for.

Оператор кома повністю відмінний від коми у масивах, об'єктах та аргументах та параметрах функцій.

Приклади

Якщо a - 2-вимірний масив з 10 елементів по кожній стороні, наступний код використовує оператор кома, щоб збільшити i та зменшити j одночасно.

Наступний код виводить значення діагональних елементів масиву:

for (var i = 0, j = 9; i <= 9; i++, j--)
  console.log('a[' + i + '][' + j + '] = ' + a[i][j]);

Зауважте, що оператори кома у присвоєннях можуть, на перший вигляд, не мати свого звичайного ефекту, тому що вони не існують всередині виразу. У наступному прикладі a присвоюється значення b = 3 (тобто, 3), але вираз c = 4 все одно обчислюється, і його результат повертається у консоль (тобто, 4). Причиною є пріоритет і асоціативність операторів.

var a, b, c;

a = b = 3, c = 4; // Повертає у консоль 4
console.log(a); // 3 (крайній зліва)

var x, y, z;

x = (y = 5, z = 6); // Повертає у консоль 6
console.log(x); // 6 (крайній справа)

Обробка перед поверненням

Інший приклад того, що можна зробити оператором кома - це обробка перед поверненням. Як зазначалося, тільки останній елемент буде повернений, але всі інші також будуть обчислені. Отже, можна зробити таке:

function myFunc() {
  var x = 0;

  return (x += 1, x); // те саме, що return ++x;
}

Специфікації

Специфікація
ECMAScript (ECMA-262)
The definition of 'Comma operator' in that specification.

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також