Ανύψωση JavaScript (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθετε για την ανύψωση JavaScript με τη βοήθεια παραδειγμάτων.

Η ανύψωση σε JavaScript είναι μια συμπεριφορά στην οποία μια συνάρτηση ή μια μεταβλητή μπορεί να χρησιμοποιηθεί πριν από τη δήλωση. Για παράδειγμα,

 // using test before declaring console.log(test); // undefined var test;

Το παραπάνω πρόγραμμα λειτουργεί και το αποτέλεσμα θα είναι απροσδιόριστο. Το παραπάνω πρόγραμμα συμπεριφέρεται ως

 // using test before declaring var test; console.log(test); // undefined

Δεδομένου ότι η δοκιμή μεταβλητής δηλώνεται μόνο και δεν έχει καμία τιμή, της undefinedαποδίδεται τιμή.

Εάν θέλετε να μάθετε περισσότερα σχετικά με τις μεταβλητές, επισκεφθείτε τις μεταβλητές JavaScript.

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

Μεταβλητή ανύψωση

Από την άποψη των μεταβλητών και σταθερών, λέξη-κλειδί varανυψώνεται και letκαι constδεν επιτρέπει την ανύψωση.

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

 // program to display value a = 5; console.log(a); var a; // 5

Στο παραπάνω παράδειγμα, η μεταβλητή α χρησιμοποιείται πριν την δηλώσει. Και το πρόγραμμα λειτουργεί και εμφανίζει την έξοδο 5. Το πρόγραμμα συμπεριφέρεται ως:

 // program to display value var a; a = 5; console.log(a); // 5

Ωστόσο, στο JavaScript, οι αρχικοποιήσεις δεν ανυψώνονται. Για παράδειγμα,

 // program to display value console.log(a); var a = 5;

Παραγωγή

 απροσδιόριστος

Το παραπάνω πρόγραμμα συμπεριφέρεται ως:

 var a; console.log(a); a = 5;

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

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

 // program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);

Παραγωγή

 γεια Uncaught ReferenceError: το b δεν ορίζεται

Στο παραπάνω παράδειγμα, η μεταβλητή b ανυψώνεται στην κορυφή της συνάρτησης greetκαι γίνεται τοπική μεταβλητή. Ως εκ τούτου, το b είναι προσβάσιμο μόνο μέσα στη συνάρτηση. b δεν γίνεται καθολική μεταβλητή.

Για να μάθετε περισσότερα σχετικά με τοπικές και καθολικές μεταβλητές, επισκεφθείτε το JavaScript Variable Scope.

Σημείωση : Κατά την ανύψωση, η μεταβλητή δήλωση είναι προσβάσιμη μόνο στο άμεσο εύρος.

Εάν μια μεταβλητή χρησιμοποιείται με τη letλέξη-κλειδί, αυτή η μεταβλητή δεν ανυψώνεται. Για παράδειγμα,

 // program to display value a = 5; console.log(a); let a; // error

Παραγωγή

 Uncaught ReferenceError: Δεν είναι δυνατή η πρόσβαση στο "a" πριν από την προετοιμασία

Κατά τη χρήση let, η μεταβλητή πρέπει να δηλωθεί πρώτα.

Λειτουργία ανύψωσης

Μια συνάρτηση μπορεί να κληθεί πριν την δηλώσει. Για παράδειγμα,

 // program to print the text greet(); function greet() ( console.log('Hi, there.'); )

Παραγωγή

 Γεια σου

Στο παραπάνω πρόγραμμα, η συνάρτηση greetκαλείται πριν την δηλώσετε και το πρόγραμμα εμφανίζει την έξοδο. Αυτό οφείλεται στην ανύψωση.

Ωστόσο, όταν μια συνάρτηση χρησιμοποιείται ως έκφραση , παρουσιάζεται σφάλμα επειδή ανυψώνονται μόνο δηλώσεις. Για παράδειγμα;

 // program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )

Παραγωγή

 Uncaught ReferenceError: ο χαιρετισμός δεν έχει οριστεί

Εάν varχρησιμοποιήθηκε στο παραπάνω πρόγραμμα, το σφάλμα θα ήταν:

 Uncaught TypeError: το χαιρετισμό δεν είναι συνάρτηση

Σημείωση : Γενικά, η ανύψωση δεν πραγματοποιείται σε άλλες γλώσσες προγραμματισμού όπως Python, C, C ++, Java.

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

Στην περίπτωση των μεταβλητών, είναι καλύτερο να χρησιμοποιήσετε letό, τι var.

ενδιαφέροντα άρθρα...