⊗jsPmCdScp 134 of 505 menu

Περιοχή ορατότητας μεταβλητών σε if-else στην JavaScript

Ας υποθέσουμε για απλότητα ότι έχουμε μια συνθήκη που εκτελείται πάντα:

if (true) { }

Ας εξετάσουμε τον ακόλουθο κώδικα:

if (true) { let res = '!'; } console.log(res);

Όπως βλέπετε, στη μεταβλητή res θα πρέπει να καταχωριστεί η τιμή '!'. Ωστόσο, αν εκτελέσετε αυτόν τον κώδικα, θα εμφανιστεί ένα σφάλμα στην κονσόλα!

Το γεγονός είναι ότι οι μεταβλητές που δηλώνονται μέσα σε αγκύλες, είναι ορατές μόνο μέσα σε αυτές τις αγκύλες και δεν είναι ορατές έξω. Επιστημονικά εδώ μιλάμε για την περιοχή ορατότητας των μεταβλητών.

Μπορούμε να πούμε ότι η περιοχή ορατότητας των μεταβλητών που δηλώνονται μέσα σε αγκύλες είναι μόνο αυτές οι αγκύλες. Ωστόσο, εάν μια μεταβλητή δηλωθεί έξω από τις αγκύλες τότε είναι ορατή και μέσα σε αυτές, και έξω:

let res; // η μεταβλητή δηλώνεται έξω if (true) { res = '!'; } console.log(res); // θα εμφανίσει '!'

Στο επόμενο παράδειγμα, στη μεταβλητή res ανάλογα με τη συνθήκη, καταγράφεται είτε η τιμή 1, είτε η τιμή 2:

let num = 5; if (num >= 0) { let res = 1; } else { let res = 2; } console.log(res);

Ωστόσο, αν εκτελέσετε αυτόν τον κώδικα, στην κονσόλα θα εμφανιστεί σφάλμα. Όπως πλέον καταλαβαίνετε, όλο το θέμα είναι στην ορατότητα των μεταβλητών. Για την επίλυση του προβλήματος ας δηλώσουμε τη μεταβλητή έξω από τη συνθήκη:

let test = true; let res; // δηλώνουμε τη μεταβλητή έξω από τη συνθήκη if (test) { res = 1; } else { res = 2; } console.log(res); // θα εμφανίσει 1

Ο συγγραφέας του παρακάτω κώδικα ήθελε να εκτελέσει έναν έλεγχο ηλικίας για το αν έχει φτάσει τα 18 χρόνια. Ο κώδικας, ωστόσο, δεν λειτουργεί. Διορθώστε το λάθος του συγγραφέα του κώδικα. Εδώ είναι ο προβληματικός κώδικας:

let age = 17; if (age >= 18) { let adult = true; } else { let adult = false; } console.log(adult);
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη