Оператор кома (,
) обчислює кожний свій операнд (зліва направо) і повертає значення останнього операнду. Це дозволяє створити складений вираз, де обчислюється більше одного виразу, а остаточним значенням складеного виразу є значення крайнього правого з його виразів. Зазвичай, його використовують, щоб передати декілька параметрів у цикл 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;
}
Специфікації
Сумісність з веб-переглядачами
BCD tables only load in the browser