Άλλοι χρήσιμοι τελεστές στην JavaScript
Πέρα από τους αριθμητικούς, εκχώρησης, σύγκρισης και λογικούς τελεστές που εξετάσαμε λεπτομερώς σε προηγούμενα κεφάλαια, η JavaScript διαθέτει και άλλους χρήσιμους τελεστές που αξίζουν μια σύντομη αναφορά. Αυτοί μας προσφέρουν πιο εξειδικευμένες δυνατότητες για τον έλεγχο της ροής του προγράμματός μας και τη διαχείριση των δεδομένων που προκύπτουν κατα την εκτέλεση του.
Τελεστής typeof
Ο τελεστής typeof
χρησιμοποιείται για να ελέγξει τον τύπο δεδομένων ενός τελεστέου (μεταβλητής, τιμής, έκφρασης) και επιστρέφει ένα string που περιγράφει αυτόν τον τύπο.
typeof 42; // "number"
typeof "hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"
typeof {}; // "object"
typeof []; // "object"
typeof function () {}; // "function"
Τελεστής instanceof
Ο τελεστής instanceof
χρησιμοποιείται για να ελέγξει αν ένα αντικείμενο είναι ένα “αντίγραφο” (instance) ενός συγκεκριμένου τύπου ή μιας κλάσης. Επιστρέφει true
ή false
.
let myDate = new Date();
console.log(myDate instanceof Date); // true
console.log(myDate instanceof Object); // true
Τελεστής null-coalescing (??
)
Ο τελεστής null-coalescing (??
) είναι ένας σχετικά νέος τελεστής που έχιει σχεδόν την ίδια συμπεριφορά με τον τελεστή ||
. Ο τελεστής ??
επιστρέφει τον τελεστέο της δεξιάς πλευράς μόνο αν ο τελεστέος της αριστερής πλευράς είναι null
ή undefined
. Διαφορετικά, επιστρέφει τον τελεστέο της αριστερής πλευράς. Η βασική διαφορά του με τον τελεστή ||
είναι ότι δεν λαμβάνει υπόψη του άλλες “falsy” τιμές (όπως 0
, ""
, false
) κατά το evaluation.
Ας δούμε ένα παράδειγμα:
console.log(null || "foo"); // "foo"
console.log(null ?? "foo"); // "foo"
console.log(undefined || "foo"); // "foo"
console.log(undefined ?? "foo"); // "foo"
console.log(false || "foo"); // "foo"
console.log(false ?? "foo"); // false
console.log(0 || "foo"); // "foo"
console.log(0 ?? "foo"); // 0
console.log("" || "foo"); // "foo"
console.log("" ?? "foo"); // ""