Τελεστής Κόμμα
Ο τελεστής κόμμα αποτιμά κάθε τελεστέο του (από τα αριστερά προς τα δεξιά) και επιστρέφει τη τιμή του τελευταίου τελεστέου.
Σύνταξη
έκφραση1, έκφραση2, έκφραση3...
Παράμετροι
έκφραση1
,έκφραση2
,έκφραση3...
- Οποιαδήποτε έκφραση.
Περιγραφή
Μπορείτε να χρησιμοποιήσετε τον τελεστή κόμμα όποτε θέλετε να συμπεριλάβετε πολλαπλές εκφράσεις σε σημείο που απαιτείται μία έκφραση. Η πιο κοινή χρήση αυτού του τελεστή είναι η προμήθεια πολλαπλών παραμέτρων σε έναν for
βρόχο.
Παραδείγματα
Αν a
είναι ένας διδιάστατος πίνακας με 10 στοιχεία σε κάθε πλευρά, ο ακόλουθος κώδικας χρησιμοποιεί τον τελεστή κόμμα για να αυξήσει δύο μεταβλητές με την μία.
Ο ακόλουθος κώδικας εκτυπώνει τις τιμές των διαγώνιων στοιχείων του πίνακα:
for (var i = 0, j = 9; i <= 9; i++, j--)
console.log('a[' + i + '][' + j + '] = ' + a[i][j]);
Παρατηρήστε ότι το κόμμα στις αναθέσεις όπως στην var
δήλωση μπορεί να μην έχει το κανονικό αποτέλεσμα του τελεστή κόμμα επειδή δεν υπάρχει μέσα σε έκφραση. Στο ακόλουθο παράδειγμα, το a
παίρνει την τιμή του b = 3
(η οποία είναι 3), αλλά η έκφραση c = 4
επίσης αποτιμάται και το αποτέλεσμά της επιστρέφει στην κονσόλα (δηλαδή, 4). Αυτό οφείλεται στην προτεραιότητα τελεστών και προσεταιριστικότητα.
// Παρατηρήστε οτι τα παρακάτω δημιουργούν globals το οποίο απαγορεύεται στο strict mode.
a = b = 3, c = 4; // Επιστρέφει 4 στην κονσόλα
console.log(a); // 3 (αριστερότερο)
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. |
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 | Αρχικός Ορισμός |
Συμβατότητα Προγράμματος Περιήγησης
Χαρακτηριστικό | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Βασική Υποστήριξη | (Yes) | (Yes) | (Yes) | 3.0 | (Yes) | (Yes) |
Χαρακτηριστικό | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Βασική Υποστήριξη | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |