Σταtement break και continue του ECMAScript

Οι διαταγές break και continue παρέχουν μια πιο στενή έλεγχο της εκτέλεσης του κώδικα μέσα στο γύρισμα.

Η διαφορά μεταξύ των διαταγών break και continue

Η διαταγή break μπορεί να εγκαταλείψει το γύρισμα αμέσως, εμποδίζοντας την επανεκτέλεση οποιουδήποτε κώδικα.

Η διαταγή continue αποσκοπεί μόνο στο να εγκαταλείψει το τρέχον γύρισμα, επιτρέποντας ακόμα την εκτέλεση του επόμενου γύριου ανάλογα με την έκφραση ελέγχου.

Για παράδειγμα:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	// Εμφάνιση "4"

Στο παραπάνω κώδικα, το γύρισμα for από 1 έως 10 επαναλαμβάνει την μεταβλητή i. Στο σώμα του γύριου, η διαταγή if θα ελέγξει (με τη χρήση του τύπου υπολογισμού) αν η τιμή του i μπορεί να διαιρεθεί από 5. Αν μπορεί να διαιρεθεί, θα εκτελεστεί η διαταγή break. Το alert θα εμφανίσει "4", δηλαδή ο αριθμός των φορών εκτέλεσης του γύριου πριν την έξοδο από το γύρισμα.

Αν αντικαταστήσουμε τη διαταγή continue με τη διαταγή break σε αυτό το παράδειγμα, τα αποτελέσματα θα ήταν διαφορετικά:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	// Εμφάνιση "8"

Εδώ, το alert θα εμφανίσει "8", δηλαδή ο αριθμός των φορών εκτέλεσης του γύριου. Ο συνολικός αριθμός των πιθανών γύρων εκτέλεσης μπορεί να είναι 9, αλλά όταν η τιμή του i είναι 5, θα εκτελεστεί η διαταγή continue, η οποία θα κάνει το γύρισμα να überspringt την έκφραση iNum++ και να επιστρέψει στην αρχή του γύριου.

Χρησιμοποιούνται με συνδυασμό με ετικέτες

Οι όροι break και continue μπορούν να χρησιμοποιηθούν με συνδυασμό με ετικέτες για να επιστρέψουν σε συγκεκριμένες θέσεις του κώδικα.

Γενικά, όταν υπάρχει γύρος μέσα σε γύρο, γίνεται έτσι, για παράδειγμα:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    break outermost;
  }
  iNum++;
  }
}
alert(iNum);	//Εκτύπωση "55"

Στο παραπάνω παράδειγμα, η ετικέτα outermost υποδηλώνει την πρώτη πρόταση for. Κανονικά, κάθε πρόταση for εκτελείται 10 φορές, αυτό σημαίνει ότι το iNum++ θα εκτελεστεί 100 φορές κανονικά, και στο τέλος, το iNum θα πρέπει να είναι ίσο με 100. Σε αυτό το παράδειγμα, ο όρος break έχει ένα παράμετρο, δηλαδή την ετικέτα της πρότασης στην οποία πρέπει να σταματήσει ο γύρος. Έτσι, ο όρος break μπορεί να βγει όχι μόνο από τον εσωτερικό γύρο (δηλαδή τον γύρο που χρησιμοποιεί τη μεταβλητή j), αλλά και από τον εξωτερικό γύρο (δηλαδή τον γύρο που χρησιμοποιεί τη μεταβλητή i). Επομένως, το τελικό όνομα του iNum είναι 55, επειδή όταν οι τιμές του i και του j είναι ίσες με 5, ο γύρος θα σταματήσει.

Μπορείτε να χρησιμοποιήσετε τον όρο continue με τον ίδιο τρόπο:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    continue outermost;
  }
  iNum++;
  }
}
alert(iNum);	//Εκτύπωση "95"

Στο παραπάνω παράδειγμα, ο όρος continue αναγκάζει τον γύρο να συνεχιστεί, όχι μόνο τον εσωτερικό γύρο, αλλά και τον εξωτερικό γύρο. Όταν το j είναι ίσο με 5, αυτό σημαίνει ότι ο εσωτερικός γύρος θα μειωθεί 5 φορές, οδηγώντας το iNum στο 95.

Σημείωση:Φαίνεται ότι οι αναγνωριστικές προτάσεις που χρησιμοποιούνται με συνδυασμό με break και continue είναι πολύ ισχυρές, αλλά η υπερβολική χρήση τους μπορεί να προκαλέσει προβλήματα κατά την αποσφαλμάτωση του κώδικα. Βεβαιωθείτε ότι οι ετικέτες που χρησιμοποιείτε είναι περιγραφικές και μην τοποθετήσετε πολλαπλά επίπεδα γυρωμόνων.

Σημείωση:Για να μάθετε τι είναι η αναγνωριστική πρόταση, διαβάστε Σταμένες Ετικετών του ECMAScript Αυτό το κεφάλαιο.