Διαδρομές
/
JavaScript
JavaScript
/
Ύλη
/
Εντολή switch
Εν

Εντολή switch σε JavaScript

4 ασκήσεις

Σχετικά με την έννοια Εντολή switch

Γενική σύνταξη

Εκτός από την εντολή if, η JavaScript έχει και την εντολή switch για να εκτελείς λογική υπό συνθήκες. Χρησιμοποιείται όταν μια μεμονωμένη μεταβλητή πρέπει να συγκριθεί με πολλές παραλλαγές. Η σύγκριση γίνεται ελέγχοντας την αυστηρή ισότητα (===), δες την έννοια της σύγκρισης. Για κάποια μεταβλητή x, η εντολή switch στην JavaScript έχει την εξής σύνταξη.

switch (x) {
  case option1:
    // code that is executed when "x === option1" is true
    break;
  case option2:
    // code that is executed when "x === option2" is true
    break;
  default:
    // code that is executed when x does not equal any of the
    // options
}

Η περίπτωση default είναι προαιρετική και χρησιμοποιείται όταν θέλεις να εκτελέσεις κάποιον κώδικα αν καμία από τις άλλες επιλογές δεν ταιριάζει με τη μεταβλητή.

Fallthrough από προεπιλογή

Οι εντολές break παραπάνω χρειάζονται επειδή από προεπιλογή όλες οι περιπτώσεις κάνουν "fallthrough" στην JavaScript. Αυτό σημαίνει ότι χωρίς καμία εντολή break, όλος ο κώδικας στις περιπτώσεις κάτω από την πρώτη επιλογή που ταιριάζει θα εκτελεστεί, ακόμα κι αν το x δεν ταίριαζε με αυτές τις επιλογές. Αυτή η συμπεριφορά "fallthrough από προεπιλογή" είναι μια συνηθισμένη παγίδα όταν χρησιμοποιείς το switch στην JavaScript. Μέσα σε μια συνάρτηση, μπορείς να χρησιμοποιήσεις το return αντί για το break για να αποφύγεις αυτό το πρόβλημα.

Μπορείς να εκμεταλλευτείς τη συμπεριφορά fallthrough προς όφελός σου όταν θέλεις να εφαρμόσεις τον ίδιο κώδικα σε πολλές περιπτώσεις. Μπορείς να βρεις ένα παράδειγμα στην τεκμηρίωση του MDN.

Εμβέλεια

Από προεπιλογή, οι μεταβλητές στις διάφορες εντολές case μοιράζονται την ίδια εμβέλεια. Αυτό μπορεί να οδηγήσει σε απρόσμενη συμπεριφορά. Για παράδειγμα, επειδή αντέγραψες και επικόλλησες μια περίπτωση, μπορεί να καταλήξεις με μια δήλωση let message σε δύο περιπτώσεις, κάτι που προκαλεί σφάλμα, δες την τεκμηρίωση του MDN. Για να αποφύγεις προβλήματα λόγω της κοινής εμβέλειας, μπορείς να δημιουργήσεις ξεχωριστή εμβέλεια για κάθε εντολή case, προσθέτοντας μπλοκ κώδικα με άγκιστρα για κάθε περίπτωση.

switch (x) {
  case option1: {
    // Variables declared here are contained to this case.
    break;
  }
  case option2: {
    // ...
    break;
  }
  default: {
    // ...
  }
}

Χρήση εκφράσεων

Αντί για μια μεταβλητή x, μπορείς να χρησιμοποιήσεις και μια έκφραση. Αυτή η έκφραση υπολογίζεται μία φορά στην αρχή της εντολής switch και το αποτέλεσμα συγκρίνεται με τις περιπτώσεις. Μια συνηθισμένη χρήση αυτού είναι το "type switch", που εκτελεί διαφορετικό κώδικα ανάλογα με τον τύπο μιας μεταβλητής.

switch (typeof x) {
  case 'string':
    // code that is executed when x is a string
    break;
  case 'number':
    // code that is executed when x is a number
    break;
  default:
    // code that is executed when x has some other type
}

Οι επιλογές μπορούν να είναι και εκφράσεις.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Εντολή switch