Operatore virgola

L'operatore virgola valuta ciascuno dei suoi operandi, da sinistra a destra, e restituisce il valore dell'ultimo operando.

Sintassi

expr1, expr2, expr3...

Parametri

expr1, expr2, expr3...
Qualsiasi espressione.

Descrizione

Puoi utilizzare l'operatore virgola quando vuoi includere più espressioni in una posizione che richiede una singola espressione. L'uso più comune di questo operatore è di fornire più parametri in un ciclo for.

L'operatore virgola è completamente differente dalla virgola utilizzata negli array, negli oggetti, e negli argomenti e parametri di funzione.

Esempi

Considerando a un array di 2 dimensioni contenente 10 elementi per ciascun lato, il seguente codice utilizza l'operatore virgola per incrementare i e decrementare j contemporaneamente.

Il seguente codice stampa i valori degli elementi in posizione diagonale dell'array:

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

Si noti che gli operatori virgola nelle assegnazioni potrebbero non avere l'effetto normale degli operatori virgola perché non esistono all'interno di un'espressione. Nel seguente esempio, a é impostato al valore di b = 3 (che é 3), ma l'espressione c = 4 continua a essere valutata e il suo valore viene restituito alla console (cioé 4). Questo é dovuto alla precedenza e all'associtività dell'operatore (en-US).

var a, b, c;

a = b = 3, c = 4; // restituisce 4 nella console
console.log(a); // 3 (più a sinistra)

var x, y, z;

x = (y = 5, z = 6); // restituisce 6 nella console
console.log(x); // 6 (più a destra)

Elaborazione e restituzione

Un altro esempio che si potrebbe fare con l'operatore virgola è quello di eleborare prima di restituire. Come detto, solo l'ultimo elemento viene restituito ma anche tutti gli altri vengono valutati. Quindi, si potrebbe fare:

function myFunc() {
  var x = 0;

  return (x += 1, x); // stesso comportamento di ++x;
}

Specificazioni

Specification Status Comment
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 Initial definition

Compatibilità con i browser

BCD tables only load in the browser

Vedi anche