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.

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 Latest Draft (ECMA-262)
The definition of 'Comma operator' in that specification.
Draft
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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Comma operatorChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support YesSafari Full support YesWebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 1.0nodejs Full support Yes

Legend

Full support  
Full support

Vedi anche