Оператор запятая выполняет каждый из его операндов (слева направо) и возвращает значение последнего операнда.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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]);
Заметьте, что запятая при объявлении переменной var
, let
или 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 (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 |
Совместимость браузеров
BCD tables only load in the browser