034.3 Μάθημα 1
Πιστοποιητικό: |
Web Development Essentials |
---|---|
Έκδοση: |
1.0 |
Θέμα: |
034 Προγραμματισμός με JavaScript |
Σκοπός: |
034.3 Δομές Ελέγχου και Functions της JavaScript |
Μάθημα: |
1 απο 2 |
Εισαγωγή
Όπως κάθε άλλη γλώσσα προγραμματισμού, ο κώδικας της JavaScript είναι μια συλλογή από statements που λέει σε έναν interpreter τι να κάνει με διαδοχική σειρά. Ωστόσο, αυτό δεν σημαίνει ότι κάθε statement πρέπει να εκτελείται μόνο μία φορά ή ότι πρέπει να εκτελείται καθόλου. Τα περισσότερα statements πρέπει να εκτελούνται μόνο όταν πληρούνται συγκεκριμένες προϋποθέσεις. Ακόμη και όταν ένα script ενεργοποιείται ασύγχρονα από ανεξάρτητα events, συχνά πρέπει να ελέγχει μια σειρά από μεταβλητές ελέγχου για να βρει το σωστό τμήμα κώδικα προς εκτέλεση.
If Statements
Η απλούστερη δομή ελέγχου δίνεται από την εντολή if
, η οποία θα εκτελέσει το statement αμέσως μετά από αυτήν, εάν η καθορισμένη συνθήκη είναι αληθής. Η JavaScript θεωρεί ότι οι συνθήκες είναι αληθείς εάν η αξιολογούμενη τιμή είναι μη μηδενική. Οτιδήποτε μέσα στην παρένθεση μετά τη λέξη if
(τα κενά αγνοούνται) θα ερμηνεύεται ως συνθήκη. Στο ακόλουθο παράδειγμα, ο κυριολεκτικός αριθμός 1
είναι η συνθήκη:
if ( 1 ) console.log("1 is always true");
Ο αριθμός 1
γράφεται ρητώς στην συνθήκη του παραδείγματος, επομένως αντιμετωπίζεται ως σταθερά (παραμένει η ίδια καθ' όλη την εκτέλεση του script) και θα αποδίδει πάντα true [αληθές] όταν χρησιμοποιείται ως υποθετική έκφραση [conditional expression]. Η λέξη true
(χωρίς τα διπλά εισαγωγικά) θα μπορούσε επίσης να χρησιμοποιηθεί αντί για το 1
, καθώς αντιμετωπίζεται επίσης ως κυριολεκτική αληθινή τιμή από τη γλώσσα. Η εντολή console.log
εκτυπώνει τα arguments της στο παράθυρο της κονσόλας του προγράμματος περιήγησης.
Tip
|
Η κονσόλα του προγράμματος περιήγησης εμφανίζει σφάλματα, προειδοποιήσεις και ενημερωτικά μηνύματα που αποστέλλονται με την εντολή |
Αν και συντακτικά σωστή, η χρήση εκφράσεων με σταθερές σε συνθήκες δεν είναι πολύ χρήσιμη. Σε μια πραγματική εφαρμογή, πιθανότατα θα θέλετε να ελέγξετε την εγκυρότητα μιας μεταβλητής:
let my_number = 3;
if ( my_number ) console.log("The value of my_number is", my_number, "and it yields true");
Η τιμή που έχει εκχωρηθεί στη μεταβλητή my_number
(3
) δεν είναι μηδενική, επομένως αποδίδει true. Αλλά αυτό το παράδειγμα δεν είναι κοινώς χρησιμοποιούμενο, επειδή σπάνια χρειάζεται να ελέγξετε εάν ένας αριθμός ισούται με μηδέν. Είναι πολύ πιο συνηθισμένο να συγκρίνετε μια τιμή με μια άλλη και να ελέγξετε εάν το αποτέλεσμα είναι αληθές:
let my_number = 3;
if ( my_number == 3 ) console.log("The value of my_number is", my_number, "indeed");
Ο τελεστής της διπλής ίσης σύγκρισης χρησιμοποιείται επειδή ο τελεστής της μονής ίσης σύγκρισης έχει ήδη οριστεί ως ο τελεστής εκχώρησης μιας τιμής σε μια μεταβλητή. Η τιμή σε κάθε πλευρά του τελεστή ονομάζεται όρος [operand]. Η σειρά των όρων δεν έχει σημασία και κάθε έκφραση που επιστρέφει μια τιμή μπορεί να είναι ένας όρος. Ακολουθεί μια λίστα με άλλους διαθέσιμους τελεστές σύγκρισης:
value1 == value2
-
Αληθές έαν η τιμή του όρου
value1
είναι ίση με τη τιμή του όρουvalue2
. value1 != value2
-
Αληθές έαν η τιμή του όρου
value1
δεν ίση με τη τιμή του όρουvalue2
. value1 < value2
-
Αληθές έαν η τιμή του όρου
value1
είναι μικρότερη απο τη τιμή του όρουvalue2
. value1 > value2
-
Αληθές έαν η τιμή του όρου
value1
είναι μεγαλύτερη απο τη τιμή του όρουvalue2
. value1 <= value2
-
Αληθές έαν η τιμή του όρου
value1
είναι μικρότερη ή ίση απο τη τιμή του όρουvalue2
. value1 >= value2
-
Αληθές έαν η τιμή του όρου
value1
είναι μεγαλύτερη ή ίση απο τη τιμή του όρουvalue2
.
Συνήθως, δεν έχει σημασία αν ο όρος στα αριστερά του τελεστή είναι ένα string και ο όρος στα δεξιά είναι ένας αριθμός, αρκεί η JavaScript να μπορεί να μετατρέψει την έκφραση σε μια ουσιαστική σύγκριση. Έτσι, το string που περιέχει τον χαρακτήρα 1
θα αντιμετωπίζεται ως ο αριθμός 1 σε σύγκριση με μια μεταβλητή αριθμού. Για να βεβαιωθείτε ότι η έκφραση αποδίδει true μόνο εάν και οι δύο όροι είναι ακριβώς του ίδιου τύπου και τιμής, θα πρέπει να χρησιμοποιηθεί ο αυστηρός τελεστής ταυτότητας ===
αντί για ==
. Παρομοίως, ο αυστηρός τελεστής μη ταυτότητας !==
αξιολογείται ως true εάν ο πρώτος όρος δεν είναι ακριβώς του ίδιου τύπου και τιμής με τον δεύτερο όρο.
Προαιρετικά, η δομή ελέγχου if
μπορεί να εκτελέσει ένα εναλλακτικό statement όταν η έκφραση αξιολογηθεί ως ψευδής [false]:
let my_number = 4;
if ( my_number == 3 ) console.log("The value of my_number is 3");
else console.log("The value of my_number is not 3");
Η εντολή else
θα πρέπει να ακολουθεί αμέσως την εντολή if
. Μέχρι στιγμής, εκτελούμε μόνο ένα statement όταν πληρούται η συνθήκη. Για να εκτελέσετε περισσότερα από ένα statement, πρέπει να τα περικλείσετε σε άγκιστρα:
let my_number = 4;
if ( my_number == 3 )
{
console.log("The value of my_number is 3");
console.log("and this is the second statement in the block");
}
else
{
console.log("The value of my_number is not 3");
console.log("and this is the second statement in the block");
}
Μια ομάδα από ένα ή περισσότερα statements που οριοθετούνται από ένα ζεύγος άγκιστρων είναι γνωστή ως δήλωση block statement. Είναι σύνηθες να χρησιμοποιούνται block statements ακόμα και όταν υπάρχει μόνο μία εντολή προς εκτέλεση, προκειμένου ο κώδικας να είναι συνεπής σε όλο το script. Επιπλέον, η JavaScript δεν απαιτεί τα άγκιστρα ή οποιεσδήποτε statements να βρίσκονται σε ξεχωριστές γραμμές, αλλά αυτό βελτιώνει την αναγνωσιμότητα και διευκολύνει τη συντήρηση του κώδικα.
Οι δομές ελέγχου μπορούν να είναι ένθετες [nested] η μία μέσα στην άλλη, αλλά είναι σημαντικό να μην αναμειγνύονται τα άγκιστρα ανοίγματος και κλεισίματος κάθε block statement:
let my_number = 4;
if ( my_number > 0 )
{
console.log("The value of my_number is positive");
if ( my_number % 2 == 0 )
{
console.log("and it is an even number");
}
else
{
console.log("and it is an odd number");
}
} // end of if ( my_number > 0 )
else
{
console.log("The value of my_number is less than or equal to 0");
console.log("and I decided to ignore it");
}
Οι εκφράσεις που αξιολογούνται από την εντολή if
μπορεί να είναι πιο περίπλοκες από απλές συγκρίσεις. Αυτή είναι η περίπτωση στο προηγούμενο παράδειγμα, όπου η αριθμητική έκφραση my_number % 2
χρησιμοποιήθηκε μέσα στις παρενθέσεις στο ένθετο if
. Ο τελεστής %
επιστρέφει το υπόλοιπο αφού διαιρέσει τον αριθμό στα αριστερά του με τον αριθμό στα δεξιά του. Αριθμητικοί τελεστές όπως το %
έχουν προτεραιότητα έναντι των τελεστών σύγκρισης όπως το ==
, επομένως η σύγκριση θα χρησιμοποιεί το αποτέλεσμα της αριθμητικής παράστασης ως τον αριστερό της όρο.
Σε πολλές περιπτώσεις, οι ένθετες υποθετικές δομές απόφασης μπορούν να συνδυαστούν σε μια ενιαία δομή χρησιμοποιώντας λογικούς τελεστές. Αν μας ενδιέφεραν μόνο θετικοί ζυγοί αριθμοί, για παράδειγμα, θα μπορούσε να χρησιμοποιηθεί μια ενιαία δομή if
:
let my_number = 4;
if ( my_number > 0 && my_number % 2 == 0 )
{
console.log("The value of my_number is positive");
console.log("and it is an even number");
}
else
{
console.log("The value of my_number either 0, negative");
console.log("or it is a negative number");
}
Ο τελεστής διπλού ampersand &&
στην αξιολογούμενη έκφραση είναι ο λογικός τελεστής AND. Αξιολογείται ως αληθής μόνο εάν η έκφραση στα αριστερά της και η έκφραση στα δεξιά της αξιολογούνται ως αληθής. Εάν θέλετε να αντιστοιχίσετε αριθμούς που είναι είτε θετικοί είτε ζυγοί, θα πρέπει να χρησιμοποιηθεί ο τελεστής ||
, ο οποίος αντιπροσωπεύει τον λογικό τελεστή OR:
let my_number = -4;
if ( my_number > 0 || my_number % 2 == 0 )
{
console.log("The value of my_number is positive");
console.log("or it is a even negative number");
}
Σε αυτό το παράδειγμα, μόνο οι αρνητικοί περιττοί αριθμοί δεν θα ταιριάζουν με τα κριτήρια που επιβάλλονται από τη σύνθετη έκφραση. Εάν έχετε την αντίθετη πρόθεση, δηλαδή να ταιριάξετε μόνο τους αρνητικούς περιττούς αριθμούς, προσθέστε τον λογικό NOT τελεστή !
στην αρχή της έκφρασης:
let my_number = -5;
if ( ! ( my_number > 0 || my_number % 2 == 0 ) )
{
console.log("The value of my_number is an odd negative number");
}
Η προσθήκη της παρένθεσης στη σύνθετη έκφραση αναγκάζει την έκφραση που περικλείεται από αυτές να αξιολογηθεί πρώτη. Χωρίς αυτές τις παρενθέσεις, ο τελεστής NOT θα ίσχυε μόνο για το my_number > 0
και στη συνέχεια θα αξιολογούταν η έκφραση OR. Οι τελεστές &&
και ||
είναι γνωστοί ως binary [δυαδικοί] λογικοί τελεστές, επειδή απαιτούν δύο όρους. Το !
είναι γνωστό ως unary [μοναδιαίος] λογικός τελεστής, επειδή απαιτεί μόνο έναν όρο.
Παρόλο που η δομή if
είναι αρκετά ευέλικτη και επαρκής για τον έλεγχο της ροής του προγράμματος, η δομή ελέγχου switch
μπορεί να είναι πιο κατάλληλη όταν πρέπει να αξιολογηθούν αποτελέσματα διαφορετικά από true ή false. Για παράδειγμα, εάν θέλουμε να κάνουμε μια ξεχωριστή ενέργεια για κάθε στοιχείο που επιλέγεται από μια λίστα, θα είναι απαραίτητο να γράψουμε μια δομή if
για κάθε αξιολόγηση:
// Available languages: en (English), es (Spanish), pt (Portuguese)
let language = "pt";
// Variable to register whether the language was found in the list
let found = 0;
if ( language == "en" )
{
found = 1;
console.log("English");
}
if ( found == 0 && language == "es" )
{
found = 1;
console.log("Spanish");
}
if ( found == 0 && language == "pt" )
{
found = 1;
console.log("Portuguese");
}
if ( found == 0 )
{
console.log(language, " is unknown to me");
}
Σε αυτό το παράδειγμα, μια βοηθητική μεταβλητή found
χρησιμοποιείται από όλες τις δομές if
για να μάθουμε αν έχει συμβεί μια αντιστοίχιση. Σε μια περίπτωση όπως αυτή, η δομή switch
θα εκτελέσει την ίδια εργασία, αλλά με πιο συνοπτικό τρόπο:
switch ( language )
{
case "en":
console.log("English");
break;
case "es":
console.log("Spanish");
break;
case "pt":
console.log("Portuguese");
break;
default:
console.log(language, " not found");
}
Κάθε ένθετο case
ονομάζεται clause. Όταν ένα clause ταιριάζει με την αξιολογούμενη έκφραση, εκτελεί τις εντολές που ακολουθούν την άνω και κάτω τελεία μέχρι το break
statement. To τελευταίo clause δεν χρειάζεται ένα break
statement και χρησιμοποιείται συχνά για να ορίσετε την προεπιλεγμένη ενέργεια όταν δεν υπάρχουν άλλες αντιστοιχίσεις. Όπως φαίνεται στο παράδειγμα, η βοηθητική μεταβλητή δεν χρειάζεται στη δομή switch
.
Warning
|
Το |
Εάν περισσότερα από ένα clause ενεργοποιούν την ίδια ενέργεια, μπορείτε να συνδυάσετε δύο ή περισσότερες συνθήκες case
:
switch ( language )
{
case "en":
case "en_US":
case "en_GB":
console.log("English");
break;
case "es":
console.log("Spanish");
break;
case "pt":
case "pt_BR":
console.log("Portuguese");
break;
default:
console.log(language, " not found");
}
Loops
Σε προηγούμενα παραδείγματα, οι δομές if
και switch
ήταν κατάλληλες για εργασίες που πρέπει να εκτελεστούν μόνο μία φορά αφού περάσουν έναν ή περισσότερους υποθετικούς ελέγχους. Ωστόσο, υπάρχουν περιπτώσεις όπου μια εργασία πρέπει να εκτελείται επανειλημμένα — σε ένα λεγόμενο loop — εφόσον η υποθετική έκφρασή της συνεχίζει να είναι αληθής. Εάν πρέπει να γνωρίζετε εάν ένας αριθμός είναι πρώτος, θα πρέπει να ελέγξετε εάν η διαίρεση αυτού του αριθμού με έναν ακέραιο αριθμό μεγαλύτερο από 1 και μικρότερο από τον εαυτό του έχει υπόλοιπο ίσο με 0. Εάν ναι, ο αριθμός έχει έναν ακέραιο παράγοντα και δεν είναι πρώτος. (Αυτή δεν είναι μια αυστηρή ή αποτελεσματική μέθοδος για την εύρεση πρώτων αριθμών, αλλά λειτουργεί ως απλό παράδειγμα.) Οι δομές ελέγχων loop είναι πιο κατάλληλες για τέτοιες περιπτώσεις, ιδίως το while
statement:
// A naive prime number tester
// The number we want to evaluate
let candidate = 231;
// Auxiliary variable
let is_prime = true;
// The first factor to try
let factor = 2;
// Execute the block statement if factor is
// less than candidate and keep doing it
// while factor is less than candidate
while ( factor < candidate )
{
if ( candidate % factor == 0 )
{
// The remainder is zero, so the candidate is not prime
is_prime = false;
break;
}
// The next factor to try. Simply
// increment the current factor by one
factor++;
}
// Display the result in the console window.
// If candidate has no integer factor, then
// the auxiliary variable is_prime still true
if ( is_prime )
{
console.log(candidate, "is prime");
}
else
{
console.log(candidate, "is not prime");
}
Το block statement που ακολουθεί την εντολή while
θα εκτελείται επανειλημμένα όσο η συνθήκη factor < candidate
παραμένει αληθής. Θα εκτελεστεί τουλάχιστον μία φορά, αρκεί να αρχικοποιήσουμε τη μεταβλητή factor
με τιμή μικρότερη από το candidate
. Η δομή if
που είναι ένθετη στη δομή while
θα αξιολογήσει εάν το υπόλοιπο του candidate
διαιρούμενο με τον factor
είναι μηδέν. Αν ναι, ο υποψήφιος αριθμός δεν είναι πρώτος και το loop μπορεί να τελειώσει. Το statement break
θα ολοκληρώσει το loop και η εκτέλεση θα μεταβεί στην πρώτη εντολή μετά το while
block.
Σημειώστε ότι το αποτέλεσμα της συνθήκης που χρησιμοποιείται από το while
statement πρέπει να αλλάζει σε κάθε loop, διαφορετικά το block statement θα επαναλαμβάνεται “για πάντα”. Στο παράδειγμα, αυξάνουμε τη μεταβλητή factor
‒τον επόμενο διαιρέτη που θέλουμε να δοκιμάσουμε‒και εγγυάται ότι το loop θα τελειώσει κάποια στιγμή.
Αυτή η απλή υλοποίηση ενός ελεγκτή πρώτων αριθμών λειτουργεί όπως αναμένεται. Ωστόσο, γνωρίζουμε ότι ένας αριθμός που δεν διαιρείται με το δύο δεν θα διαιρείται με κανέναν άλλο ζυγό αριθμό. Επομένως, θα μπορούσαμε απλώς να παραλείψουμε τους ζυγούς αριθμούς προσθέτοντας άλλη μια εντολή if
:
while ( factor < candidate )
{
// Skip even factors bigger than two
if ( factor > 2 && factor % 2 == 0 )
{
factor++;
continue;
}
if ( candidate % factor == 0 )
{
// The remainder is zero, so the candidate is not prime
is_prime = false;
break;
}
// The next number that will divide the candidate
factor++;
}
Το continue
statement είναι παρόμοιο με το break
statement, αλλά αντί να τελειώσει αυτή η επανάληψη του loop, θα αγνοήσει το υπόλοιπο block του loop και θα ξεκινήσει μια νέα επανάληψη. Σημειώστε ότι η μεταβλητή factor
τροποποιήθηκε πριν από το continue
statement, διαφορετικά το loop θα είχε ξανά το ίδιο αποτέλεσμα στην επόμενη επανάληψη. Αυτό το παράδειγμα είναι πολύ απλό και η παράλειψη μέρους του loop δεν θα βελτιώσει πραγματικά την απόδοσή του, αλλά η παράλειψη περιττών οδηγιών είναι πολύ σημαντική όταν θέλετε να γράψετε αποτελεσματικές εφαρμογές.
Τα loops χρησιμοποιούνται τόσο συχνά που υπάρχουν σε πολλές διαφορετικές παραλλαγές. Το loop for
είναι ειδικά κατάλληλο για επανάληψη μέσω διαδοχικών τιμών, επειδή μας επιτρέπει να ορίσουμε τους κανόνες του loop σε μία μόνο γραμμή:
for ( let factor = 2; factor < candidate; factor++ )
{
// Skip even factors bigger than two
if ( factor > 2 && factor % 2 == 0 )
{
continue;
}
if ( candidate % factor == 0 )
{
// The remainder is zero, so the candidate is not prime
is_prime = false;
break;
}
}
Αυτό το παράδειγμα παράγει ακριβώς το ίδιο αποτέλεσμα με το προηγούμενο while
παράδειγμα, αλλά η παρενθετική έκφρασή του περιλαμβάνει τρία μέρη, που χωρίζονται με ερωτηματικά: την αρχικοποίηση (let factor = 2
), τη loop συνθήκη (factor < candidate
) και η τελική έκφραση που θα αξιολογηθεί στο τέλος κάθε επανάληψης του loop (factor+`). Τα statements `continue` και `break` ισχύουν επίσης για `for` loops. Η τελική έκφραση στην παρενθέση (`factor+
) θα αξιολογηθεί μετά το continue
statement, επομένως δεν θα πρέπει να βρίσκεται μέσα στο block statement, διαφορετικά θα αυξηθεί δύο φορές πριν από την επόμενη επανάληψη.
Η JavaScript έχει ειδικούς τύπους for
loops για εργασία με objects που μοιάζουν με array. Θα μπορούσαμε, για παράδειγμα, να ελέγξουμε ένα array υποψήφιων μεταβλητών αντί για μία μόνο:
// A naive prime number tester
// The array of numbers we want to evaluate
let candidates = [111, 139, 293, 327];
// Evaluates every candidate in the array
for (candidate of candidates)
{
// Auxiliary variable
let is_prime = true;
for ( let factor = 2; factor < candidate; factor++ )
{
// Skip even factors bigger than two
if ( factor > 2 && factor % 2 == 0 )
{
continue;
}
if ( candidate % factor == 0 )
{
// The remainder is zero, so the candidate is not prime
is_prime = false;
break;
}
}
// Display the result in the console window
if ( is_prime )
{
console.log(candidate, "is prime");
}
else
{
console.log(candidate, "is not prime");
}
}
Το statement for (candidate of candidates)
εκχωρεί ένα στοιχείο του candidates
array στη μεταβλητή candidate
και το χρησιμοποιεί στο block statement, επαναλαμβάνοντας τη διαδικασία για κάθε στοιχείο μέσα στο array. Δεν χρειάζεται να δηλώσετε candidate
ξεχωριστά, γιατί το for
loop τον ορίζει. Τέλος, ο ίδιος κώδικας από το προηγούμενο παράδειγμα ήταν ένθετος σε αυτό το νέο block statement, αλλά αυτή τη φορά δοκιμάζοντας κάθε υποψήφιο απο το array.
Καθοδηγούμενες Ασκήσεις
-
Ποιες τιμές της μεταβλητής
my_var
αντιστοιχούν στη συνθήκηmy_var > 0 && my_var < 9
; -
Ποιες τιμές της μεταβλητής
my_var
αντιστοιχούν στη συνθήκηmy_var > 0 || my_var < 9
; -
Πόσες φορές το ακόλουθο
while
loop εκτελεί το block statement;let i = 0; while ( 1 ) { if ( i == 10 ) { continue; } i++; }
Ασκήσεις Εξερεύνησης
-
Τι συμβαίνει εάν χρησιμοποιείται ο τελεστής ίσης ανάθεσης
=
αντί του τελεστή ίσης σύγκρισης==
; -
Γράψτε ένα τμήμα κώδικα χρησιμοποιώντας τη δομή ελέγχου
if
όπου μια συνηθισμένη σύγκριση ισότητας θα επιστρέψει true, αλλά μια αυστηρή σύγκριση ισότητας όχι. -
Ξαναγράψτε το ακόλουθο
for
statement χρησιμοποιώντας τον λογικό τελεστή NOT στη loop συνθήκη. Το αποτέλεσμα της συνθήκης πρέπει να είναι το ίδιο.for ( let factor = 2; factor < candidate; factor++ )
-
Με βάση τα παραδείγματα από αυτό το μάθημα, γράψτε μια loop δομή ελέγχου που εκτυπώνει όλους τους ακέραιους παράγοντες ενός δεδομένου αριθμού.
Σύνοψη
Αυτό το μάθημα καλύπτει τον τρόπο χρήσης δομών ελέγχου σε κώδικα JavaScript. Οι υποθετικές δομές και οι δομές loop είναι βασικά στοιχεία οποιουδήποτε προγραμματιστικού paradigm και ανάπτυξη web εφαρμογών με JavaScript δεν αποτελεί εξαίρεση. Το μάθημα περιλαμβάνει τις ακόλουθες έννοιες και διαδικασίες:
-
Το
if
statement και οι τελεστές σύγκρισης. -
Πώς να χρησιμοποιήσετε τη δομή
switch
μεcase
,default
, καιbreak
. -
Η διαφορά μεταξύ συνηθισμένης και αυστηρής σύγκρισης.
-
Δομές ελέγχου loop:
while
καιfor
.
Απαντήσεις στις Καθοδηγούμενες Ασκήσεις
-
Ποιες τιμές της μεταβλητής
my_var
αντιστοιχούν στη συνθήκηmy_var > 0 && my_var < 9
;Μόνο αριθμοί που είναι και οι δύο μεγαλύτεροι από 0 και μικρότεροι από 9. Ο λογικός τελεστής
&&
(AND) απαιτεί και οι δύο συγκρίσεις να ταιριάζουν. -
Ποιες τιμές της μεταβλητής
my_var
αντιστοιχούν στη συνθήκηmy_var > 0 || my_var < 9
;Η χρήση του λογικού τελεστή
||
(OR) θα προκαλέσει την αντιστοίχιση οποιουδήποτε αριθμού, καθώς οποιοσδήποτε αριθμός θα είναι είτε μεγαλύτερος από 0 είτε μικρότερος από 9. -
Πόσες φορές το ακόλουθο
while
loop εκτελεί το block statement;let i = 0; while ( 1 ) { if ( i == 10 ) { continue; } i++; }
Το block statement θα επαναλαμβάνεται επ' αόριστον, καθώς δεν παρέχεται συνθήκη διακοπής.
Απαντήσεις στις Ασκήσεις Εξερεύνησης
-
Τι συμβαίνει εάν χρησιμοποιείται ο τελεστής ίσης ανάθεσης
=
αντί του τελεστή ίσης σύγκρισης==
;Η τιμή στη δεξιά πλευρά του τελεστή εκχωρείται στη μεταβλητή στα αριστερά και το αποτέλεσμα περνά στη σύγκριση, η οποία μπορεί να μην είναι η επιθυμητή συμπεριφορά.
-
Γράψτε ένα τμήμα κώδικα χρησιμοποιώντας τη δομή ελέγχου
if
όπου μια συνηθισμένη σύγκριση ισότητας θα επιστρέψει true, αλλά μια αυστηρή σύγκριση ισότητας όχι.let a = "1"; let b = 1; if ( a == b ) { console.log("An ordinary comparison will match."); } if ( a === b ) { console.log("A strict comparison will not match."); }
-
Ξαναγράψτε το ακόλουθο
for
statement χρησιμοποιώντας τον λογικό τελεστή NOT στη loop συνθήκη. Το αποτέλεσμα της συνθήκης πρέπει να είναι το ίδιο.for ( let factor = 2; factor < candidate; factor++ )
Απάντηση:
for ( let factor = 2; ! (factor >= candidate); factor++ )
-
Με βάση τα παραδείγματα από αυτό το μάθημα, γράψτε μια loop δομή ελέγχου που εκτυπώνει όλους τους ακέραιους παράγοντες ενός δεδομένου αριθμού.
for ( let factor = 2; factor <= my_number; factor++ ) { if ( my_number % factor == 0 ) { console.log(factor, " is an integer factor of ", my_number); } }