Оператор кома

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

Синтаксис

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.
Living Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Comma operator' in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
The definition of 'Comma operator' in that specification.
Standard
ECMAScript 1st Edition (ECMA-262)
The definition of 'Comma operator' in that specification.
Standard Початкове визначення

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Comma operatorChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

Див. також