L'operatore virgola valuta ciascuno dei suoi operandi, da sinistra a destra, e restituisce il valore dell'ultimo operando.
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.
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 (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