Hoisting JavaScript

Το Hoisting είναι η προεπιλεγμένη συμπεριφορά του JavaScript να μεταφέρει τις δηλώσεις στην κορυφή.

Οι δηλώσεις του JavaScript μεταφέρονται.

Στο JavaScript, μπορεί να δηλωθεί η μεταβλητή μετά από τη χρήση της.

Αντίθετα, μπορεί να χρησιμοποιηθεί πριν από τη δήλωση της μεταβλητής.

Παράδειγμα 1 μεΠαράδειγμα 2 οι αποτελέσματα είναι τα ίδια:

Παράδειγμα 1

x = 5; // Αποδοχή του 5 στο x
elem = document.getElementById("demo"); // Αναζήτηση στοιχείου
elem.innerHTML = x;                     // Εμφάνιση του x στο στοιχείο
var x; // Υπογραφή x

Δοκιμάστε το προσωπικά

Παράδειγμα 2

var x; // Υπογραφή x
x = 5; // Αποδοχή του 5 στο x
elem = document.getElementById("demo"); // Αναζήτηση στοιχείου
elem.innerHTML = x;                     // Εμφάνιση του x στο στοιχείο

Δοκιμάστε το προσωπικά

Για να κατανοήσετε αυτό, πρέπει να κατανοήσετε τον όρο "hoisting".

Το Hoisting είναι η προεπιλεγμένη συμπεριφορά του JavaScript να μεταφέρει όλες τις δηλώσεις στην κορυφή του τρέχοντος ορίζοντα (μεταφέρεται στην κορυφή του τρέχοντος script ή της τρέχουσας λειτουργίας).

οι λέξεις-κλειδιά let και const

με let ή const Οι μεταβλητές που δηλώνονται και οι σταθερές δεν μεταφέρονται στην κορυφή!

Παρακαλώ JS Let / Const Παρακαλώ διαβάστε περισσότερα για το let και το const στο.

Οι initializations του JavaScript δεν μεταφέρονται.

Το JavaScript μεταφέρει μόνο τις δηλώσεις και όχι τις initializations.

Παράδειγμα 1 μεΠαράδειγμα 2 οι αποτελέσματα δεν είναι τα ίδια:

Παράδειγμα 1

var x = 5; // Εν�始化 x
var y = 7; // Υπογραφή y
elem = document.getElementById("demo"); // Αναζήτηση στοιχείου
elem.innerHTML = x + " " + y;           // Εμφάνιση του x και του y

Δοκιμάστε το προσωπικά

Παράδειγμα 2

var x = 5; // Εν�始化 x
elem = document.getElementById("demo"); // Αναζήτηση στοιχείου
elem.innerHTML = x + " " + y;           // Εμφάνιση του x και του y
var y = 7; // Υπογραφή y 

Δοκιμάστε το προσωπικά

Μπορεί να ισχύει ότι η y στο τελευταίο παράδειγμα παραμένει μη ορισμένη;

Γιατί μόνο η δήλωση (var y) και όχι η�始化 (=7) μεταφέρεται στην κορυφή.

Όπως το hoisting, η y έχει ήδη ανακηρυχθεί πριν από τη χρήση της, αλλά επειδή η ανακάλυψη δεν έχει προχωρήσει, η τιμή της y παραμένει μη ορισμένη.

Το παράδειγμα 2 είναι το ίδιο:

Παράδειγμα

var x = 5; // Εν�始化 x
var y;     // Δημιουργία y
elem = document.getElementById("demo"); // Αναζήτηση στοιχείου
elem.innerHTML = x + " " + y;           // Εμφάνιση του x και του y
y = 7;    // Αναθέστε το 7 στη y

Δοκιμάστε το προσωπικά

Δηλώστε τις μεταβλητές σας στην κορυφή!

Το hoisting (για πολλούς προγραμματιστές) είναι ένας άγνωστος ή αγνοημένος τρόπος λειτουργίας του JavaScript.

Αν οι προγραμματιστές δεν κατανοούν το hoisting, το πρόγραμμα μπορεί να περιέχει σφάλματα (λάθη).

Για να αποφύγετε τα σφάλματα, παρακαλώ δηλώστε όλες τις μεταβλητές σας στην αρχή κάθε χώρου δράσης.

Επειδή αυτό είναι ο τρόπος που το JavaScript εξηγεί τον κώδικα, παραμείνετε σε αυτή τη καλή συνήθεια.

Το JavaScript σε σφιχτό μοτίβο δεν επιτρέπει τη χρήση μεταβλητών χωρίς να έχουν προηγουμένως ανακηρυχθεί.

Παρακαλώ μάθετε στο επόμενο κεφάλαιοuse strict。”