Оператор запятая выполняет каждый из его операндов (слева направо) и возвращает значение последнего операнда.

Синтаксис

expr1, expr2, expr3...

Параметры

expr1, expr2, expr3...
Любые выражения.

Описание

Вы можете использовать оператор запятая, когда необходимо включить несколько выражений в место, которое принимает только одно выражение. Наиболее частый пример использования этого оператора - это передача нескольких параметров в цикл for.

Примеры

Если a это двумерный массив элементов размерностью 10 х 10, то приведенный ниже код использует оператор запятая для одновременного изменения двух переменных за раз.

Следующий код выводит в консоль значения диагональных элементов массива:

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

Заметьте, что запятая при объявлении переменной varlet или const не является оператором запятая, так как в данном случае она находится не в выражении. Скорее, это спец символ в объявлении переменных, комбинирующий их множество в одно выражение. Практически, эта запятая ведет себя почти так же, как и запятая.

  // подобное объявление запрещено в строгом режиме(strict mode)
  
a = b = 3, c = 4; // возвращает 4 в консоль
console.log(a); // 3
x = (y = 5, z = 6); // возвращает 6 в консоль
console.log(x); // 6

Оператор запятая полностью отличается от запятой в массивах, объектах, аргументах и параметрах функции.

Вычисления и возврат значения

Другой пример использования оператора запятой – вычисления перед возвратом значения. Как было указано ранее, будет возвращён только последний элемент, но все предыдущие также будут вычислены. Таким образом можно сделать:

function myFunc () {
  let x = 0;

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

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

Спецификация Статус Комментарий
ECMAScript Latest Draft (ECMA-262)
Определение 'Comma operator' в этой спецификации.
Черновик  
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Comma operator' в этой спецификации.
Стандарт  
ECMAScript 5.1 (ECMA-262)
Определение 'Comma operator' в этой спецификации.
Стандарт  
ECMAScript 1st Edition (ECMA-262)
Определение 'Comma operator' в этой спецификации.
Стандарт Initial definition

Совместимость браузеров

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidiOS SafariSamsung InternetNode.js
Базовая поддержкаChrome Полная поддержка ДаEdge Полная поддержка ДаFirefox Полная поддержка 1IE Полная поддержка 3Opera Полная поддержка ДаSafari Полная поддержка ДаWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаEdge Mobile Полная поддержка ДаFirefox Android Полная поддержка 4Opera Android Полная поддержка ДаSafari iOS Полная поддержка ДаSamsung Internet Android Полная поддержка Даnodejs Полная поддержка Да

Легенда

Полная поддержка  
Полная поддержка

Смотри также

Метки документа и участники

Внесли вклад в эту страницу: Walter-Bishop, echelonka, OlegTar, cotolany, br3t, alnimu, Frenk1, fscholz, Ohar, teoli, nurbek.ab
Обновлялась последний раз: Walter-Bishop,