# Βασικά στοιχεία JavaScript: Λήψη αποφάσεων ![Βασικά στοιχεία JavaScript - Λήψη αποφάσεων](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0b1cb2f8adaff3ed2a77c4f91db96d8a0594132a353fa189a.el.png) > Σημειώσεις από [Tomomi Imura](https://twitter.com/girlie_mac) ## Ερωτηματολόγιο πριν το μάθημα [Ερωτηματολόγιο πριν το μάθημα](https://ff-quizzes.netlify.app/web/quiz/11) Η λήψη αποφάσεων και ο έλεγχος της σειράς εκτέλεσης του κώδικα καθιστούν τον κώδικα επαναχρησιμοποιήσιμο και ανθεκτικό. Αυτή η ενότητα καλύπτει τη σύνταξη για τον έλεγχο της ροής δεδομένων στη JavaScript και τη σημασία της όταν χρησιμοποιείται με τύπους δεδομένων Boolean. [![Λήψη αποφάσεων](https://img.youtube.com/vi/SxTp8j-fMMY/0.jpg)](https://youtube.com/watch?v=SxTp8j-fMMY "Λήψη αποφάσεων") > 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο σχετικά με τη λήψη αποφάσεων. > Μπορείτε να παρακολουθήσετε αυτό το μάθημα στο [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101-if-else/?WT.mc_id=academic-77807-sagibbon)! ## Σύντομη ανακεφαλαίωση για τα Booleans Τα Booleans μπορούν να έχουν μόνο δύο τιμές: `true` ή `false`. Τα Booleans βοηθούν στη λήψη αποφάσεων σχετικά με το ποιες γραμμές κώδικα πρέπει να εκτελεστούν όταν πληρούνται ορισμένες συνθήκες. Ορίστε το Boolean σας ως true ή false όπως παρακάτω: `let myTrueBool = true` `let myFalseBool = false` ✅ Τα Booleans πήραν το όνομά τους από τον Άγγλο μαθηματικό, φιλόσοφο και λογικό George Boole (1815–1864). ## Τελεστές σύγκρισης και Booleans Οι τελεστές χρησιμοποιούνται για την αξιολόγηση συνθηκών μέσω συγκρίσεων που δημιουργούν μια Boolean τιμή. Ακολουθεί μια λίστα με τελεστές που χρησιμοποιούνται συχνά. | Σύμβολο | Περιγραφή | Παράδειγμα | | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | | `<` | **Μικρότερο από**: Συγκρίνει δύο τιμές και επιστρέφει την Boolean τιμή `true` αν η τιμή στα αριστερά είναι μικρότερη από την τιμή στα δεξιά | `5 < 6 // true` | | `<=` | **Μικρότερο ή ίσο με**: Συγκρίνει δύο τιμές και επιστρέφει την Boolean τιμή `true` αν η τιμή στα αριστερά είναι μικρότερη ή ίση με την τιμή στα δεξιά | `5 <= 6 // true` | | `>` | **Μεγαλύτερο από**: Συγκρίνει δύο τιμές και επιστρέφει την Boolean τιμή `true` αν η τιμή στα αριστερά είναι μεγαλύτερη από την τιμή στα δεξιά | `5 > 6 // false` | | `>=` | **Μεγαλύτερο ή ίσο με**: Συγκρίνει δύο τιμές και επιστρέφει την Boolean τιμή `true` αν η τιμή στα αριστερά είναι μεγαλύτερη ή ίση με την τιμή στα δεξιά | `5 >= 6 // false` | | `===` | **Αυστηρή ισότητα**: Συγκρίνει δύο τιμές και επιστρέφει την Boolean τιμή `true` αν οι τιμές στα δεξιά και αριστερά είναι ίσες ΚΑΙ του ίδιου τύπου δεδομένων | `5 === 6 // false` | | `!==` | **Ανισότητα**: Συγκρίνει δύο τιμές και επιστρέφει την αντίθετη Boolean τιμή από αυτή που θα επέστρεφε ο τελεστής αυστηρής ισότητας | `5 !== 6 // true` | ✅ Ελέγξτε τις γνώσεις σας γράφοντας κάποιες συγκρίσεις στην κονσόλα του προγράμματος περιήγησης. Σας εκπλήσσει κάποιο από τα δεδομένα που επιστρέφονται; ## Δήλωση If Η δήλωση if θα εκτελέσει τον κώδικα που βρίσκεται μέσα στα μπλοκ της αν η συνθήκη είναι αληθής. ```javascript if (condition) { //Condition is true. Code in this block will run. } ``` Οι λογικοί τελεστές χρησιμοποιούνται συχνά για τη δημιουργία της συνθήκης. ```javascript let currentMoney; let laptopPrice; if (currentMoney >= laptopPrice) { //Condition is true. Code in this block will run. console.log("Getting a new laptop!"); } ``` ## Δήλωση If..Else Η δήλωση `else` θα εκτελέσει τον κώδικα που βρίσκεται μέσα στα μπλοκ της όταν η συνθήκη είναι ψευδής. Είναι προαιρετική με μια δήλωση `if`. ```javascript let currentMoney; let laptopPrice; if (currentMoney >= laptopPrice) { //Condition is true. Code in this block will run. console.log("Getting a new laptop!"); } else { //Condition is false. Code in this block will run. console.log("Can't afford a new laptop, yet!"); } ``` ✅ Ελέγξτε την κατανόησή σας για αυτόν τον κώδικα και τον παρακάτω κώδικα εκτελώντας τον στην κονσόλα του προγράμματος περιήγησης. Αλλάξτε τις τιμές των μεταβλητών currentMoney και laptopPrice για να αλλάξετε το αποτέλεσμα του `console.log()`. ## Δήλωση Switch Η δήλωση `switch` χρησιμοποιείται για την εκτέλεση διαφορετικών ενεργειών με βάση διαφορετικές συνθήκες. Χρησιμοποιήστε τη δήλωση `switch` για να επιλέξετε ένα από τα πολλά μπλοκ κώδικα που θα εκτελεστούν. ```javascript switch (expression) { case x: // code block break; case y: // code block break; default: // code block } ``` ```javascript // program using switch statement let a = 2; switch (a) { case 1: a = "one"; break; case 2: a = "two"; break; default: a = "not found"; break; } console.log(`The value is ${a}`); ``` ✅ Ελέγξτε την κατανόησή σας για αυτόν τον κώδικα και τον παρακάτω κώδικα εκτελώντας τον στην κονσόλα του προγράμματος περιήγησης. Αλλάξτε τις τιμές της μεταβλητής a για να αλλάξετε το αποτέλεσμα του `console.log()`. ## Λογικοί τελεστές και Booleans Οι αποφάσεις μπορεί να απαιτούν περισσότερες από μία συγκρίσεις και μπορούν να συνδυαστούν με λογικούς τελεστές για να παράγουν μια Boolean τιμή. | Σύμβολο | Περιγραφή | Παράδειγμα | | ------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | `&&` | **Λογικό AND**: Συγκρίνει δύο Boolean εκφράσεις. Επιστρέφει true **μόνο** αν και οι δύο πλευρές είναι αληθείς | `(5 > 6) && (5 < 6 ) //Μία πλευρά είναι ψευδής, η άλλη αληθής. Επιστρέφει false` | | `\|\|` | **Λογικό OR**: Συγκρίνει δύο Boolean εκφράσεις. Επιστρέφει true αν τουλάχιστον μία πλευρά είναι αληθής | `(5 > 6) \|\| (5 < 6) //Μία πλευρά είναι ψευδής, η άλλη αληθής. Επιστρέφει true` | | `!` | **Λογικό NOT**: Επιστρέφει την αντίθετη τιμή μιας Boolean έκφρασης | `!(5 > 6) // 5 δεν είναι μεγαλύτερο από 6, αλλά το "!" θα επιστρέψει true` | ## Συνθήκες και αποφάσεις με λογικούς τελεστές Οι λογικοί τελεστές μπορούν να χρησιμοποιηθούν για τη δημιουργία συνθηκών σε δηλώσεις if..else. ```javascript let currentMoney; let laptopPrice; let laptopDiscountPrice = laptopPrice - laptopPrice * 0.2; //Laptop price at 20 percent off if (currentMoney >= laptopPrice || currentMoney >= laptopDiscountPrice) { //Condition is true. Code in this block will run. console.log("Getting a new laptop!"); } else { //Condition is true. Code in this block will run. console.log("Can't afford a new laptop, yet!"); } ``` ### Τελεστής άρνησης Έχετε δει μέχρι τώρα πώς μπορείτε να χρησιμοποιήσετε μια δήλωση `if...else` για να δημιουργήσετε λογική συνθηκών. Οτιδήποτε μπαίνει σε μια δήλωση `if` πρέπει να αξιολογείται ως true/false. Χρησιμοποιώντας τον τελεστή `!` μπορείτε να _αρνηθείτε_ την έκφραση. Θα μοιάζει κάπως έτσι: ```javascript if (!condition) { // runs if condition is false } else { // runs if condition is true } ``` ### Τριαδικές εκφράσεις Η δήλωση `if...else` δεν είναι ο μόνος τρόπος για να εκφράσετε λογική αποφάσεων. Μπορείτε επίσης να χρησιμοποιήσετε κάτι που ονομάζεται τριαδικός τελεστής. Η σύνταξή του μοιάζει με την εξής: ```javascript let variable = condition ? : ``` Παρακάτω είναι ένα πιο απτό παράδειγμα: ```javascript let firstNumber = 20; let secondNumber = 10; let biggestNumber = firstNumber > secondNumber ? firstNumber : secondNumber; ``` ✅ Αφιερώστε ένα λεπτό για να διαβάσετε αυτόν τον κώδικα μερικές φορές. Καταλαβαίνετε πώς λειτουργούν αυτοί οι τελεστές; Ο παραπάνω κώδικας δηλώνει ότι: - αν το `firstNumber` είναι μεγαλύτερο από το `secondNumber` - τότε εκχωρήστε το `firstNumber` στο `biggestNumber` - αλλιώς εκχωρήστε το `secondNumber`. Η τριαδική έκφραση είναι απλώς ένας συμπαγής τρόπος γραφής του παρακάτω κώδικα: ```javascript let biggestNumber; if (firstNumber > secondNumber) { biggestNumber = firstNumber; } else { biggestNumber = secondNumber; } ``` --- ## 🚀 Πρόκληση Δημιουργήστε ένα πρόγραμμα που γράφεται πρώτα με λογικούς τελεστές και στη συνέχεια ξαναγράψτε το χρησιμοποιώντας μια τριαδική έκφραση. Ποια σύνταξη προτιμάτε; --- ## Ερωτηματολόγιο μετά το μάθημα [Ερωτηματολόγιο μετά το μάθημα](https://ff-quizzes.netlify.app/web/quiz/12) ## Ανασκόπηση & Αυτομελέτη Διαβάστε περισσότερα για τους πολλούς διαθέσιμους τελεστές [στο MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators). Δείτε το υπέροχο [operator lookup](https://joshwcomeau.com/operator-lookup/) του Josh Comeau! ## Εργασία [Τελεστές](assignment.md) --- **Αποποίηση ευθύνης**: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.