Оператор кома (,) обчислює кожний свій операнд (зліва направо) і повертає значення останнього операнду. Це дозволяє створити складений вираз, де обчислюється більше одного виразу, а остаточним значенням складеного виразу є значення крайнього правого з його виразів. Зазвичай, його використовують, щоб передати декілька параметрів у цикл for.
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 - 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. |
Сумісність з веб-переглядачами
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Comma operator | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Legend
- Full support
- Full support