Σε αυτό το σεμινάριο, θα μάθετε για τη διαφορά μεταξύ let και var στο JavaScript με τη βοήθεια παραδειγμάτων.
Στο JavaScript, τόσο οι λέξεις-κλειδιά όσο var
και let
χρησιμοποιούνται για να δηλώσουν μεταβλητές.
Η let
λέξη-κλειδί εισήχθη στην τελευταία έκδοση του JavaScript γνωστή ως ES6 (ES2015) . Και είναι ο προτιμώμενος τρόπος για να δηλώσετε μεταβλητές.
Επιτρέψτε το JavaScript Vs var
Ακολουθεί η επισκόπηση των διαφορών μεταξύ let
και var
.
αφήνω | var |
---|---|
ας είναι αποκλεισμένη. | Το var είναι εύρος λειτουργίας. |
let δεν επιτρέπει τον επαναπροσδιορισμό μεταβλητών. | Το var επιτρέπει τον επαναπροσδιορισμό μεταβλητών. |
Η ανύψωση δεν συμβαίνει στο let. | Η ανύψωση εμφανίζεται σε var. |
Το JavaScript επιτρέπει το Vs var στο Local Scope
Το var είναι εύρος λειτουργίας
Η μεταβλητή που δηλώνεται μέσα σε μια συνάρτηση με var
μπορεί να χρησιμοποιηθεί οπουδήποτε μέσα σε μια συνάρτηση. Για παράδειγμα,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
Στο παραπάνω πρόγραμμα, η μεταβλητή α δηλώνεται με var
. Η μεταβλητή a μπορεί να χρησιμοποιηθεί οπουδήποτε μέσα στη συνάρτηση greet
.
ας είναι αποκλεισμένη
Η μεταβλητή που δηλώνεται με let
μπορεί να έχει πρόσβαση μόνο μέσα σε ένα μπλοκ κώδικα. Για παράδειγμα,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Παραγωγή
hello world Uncaught ReferenceError: το b δεν έχει οριστεί
Στο παραπάνω πρόγραμμα, η μεταβλητή α δηλώνεται μέσα στη συνάρτηση και μπορεί να προσπελαστεί οπουδήποτε μέσα στη συνάρτηση (a γίνεται λειτουργία scoped).
Ωστόσο, η μεταβλητή b δηλώνεται μέσα στη if
δήλωση μπλοκ. Το b θα έχει πεδίο αποκλεισμού και είναι προσβάσιμο μόνο εντός του if
μπλοκ.
Ως εκ τούτου, όταν προσπαθείτε να αποκτήσετε πρόσβαση b εκτός του if
μπλοκ, παρουσιάζεται ένα σφάλμα (όπως φαίνεται παραπάνω στο πρόγραμμα).
Σημείωση : Οι μεταβλητές που δηλώνονται μέσα σε μια συνάρτηση θα καλύπτονται από συνάρτηση και για τα δύο var
και για let
.
let δεν επιτρέπει να επαναπροσδιορίσετε μεταβλητές
1. Μια μεταβλητή που δηλώνεται με var
μπορεί να επαναδηλωθεί ξανά. Για παράδειγμα,
var a = 5; // 5 var a = 3; // 3
Μια μεταβλητή που δηλώνεται με let
δεν μπορεί να επαναδηλωθεί εντός του ίδιου μπλοκ ή του ίδιου πεδίου. Για παράδειγμα,
let a = 5; let a = 3; // error
Παραγωγή
Uncaught SyntaxError: Το αναγνωριστικό «a» έχει ήδη δηλωθεί
2. Η εκ νέου δήλωση μιας μεταβλητής με var
διαφορετικό εύρος ή μπλοκ αλλάζει και την τιμή της εξωτερικής μεταβλητής. Για παράδειγμα,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Η εκ νέου δήλωση μιας μεταβλητής με let
διαφορετικό πεδίο ή μπλοκ αντιμετωπίζει αυτήν τη μεταβλητή ως διαφορετική μεταβλητή. Και η τιμή μιας μεταβλητής εκτός δεν αλλάζει. Για παράδειγμα,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Όταν μια μεταβλητή δηλώνεται με var
χρησιμοποιείται σε βρόχο, η τιμή αυτής της μεταβλητής αλλάζει. Για παράδειγμα,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Στο παραπάνω πρόγραμμα, ο for
βρόχος επαναπροσδιορίζει τη μεταβλητή a. Εξ ου και η τιμή του a
αλλάζει σε 3 στο τέλος.
Όταν μια μεταβλητή που δηλώνεται με let χρησιμοποιείται σε βρόχο, η τιμή μιας μεταβλητής δεν αλλάζει. Για παράδειγμα,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
Στο παραπάνω πρόγραμμα, ο for
βρόχος αντιμετωπίζει τη μεταβλητή ως διαφορετική μεταβλητή από αυτήν που δηλώθηκε παραπάνω. Και το εύρος αυτής της μεταβλητής είναι μόνο εντός του for
βρόχου. Εξ ου και η τιμή της μεταβλητής παραμένει 2 στο τέλος.
ας δεν επιτρέπεται ανύψωση
Οι μεταβλητές που δηλώνονται με var
ανυψώνονται στην κορυφή του πεδίου εφαρμογής του προγράμματος. Για παράδειγμα,
console.log(a); var a; // undefined (not an error)
Η λέξη-κλειδί let
δεν επιτρέπει ανύψωση. Για παράδειγμα,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Αν θέλετε να μάθετε περισσότερα σχετικά με την ανύψωση, επισκεφθείτε την ανύψωση JavaScript.
let and var Υποστήριξη προγράμματος περιήγησης
Τα περισσότερα από τα σύγχρονα προγράμματα περιήγησης υποστηρίζουν τη χρήση του let
. Ωστόσο, ορισμένα προγράμματα περιήγησης δεν υποστηρίζουν πλήρως let
.
Για να μάθετε περισσότερα, επισκεφτείτε το JavaScript, επιτρέψτε στο πρόγραμμα περιήγησης να υποστηρίξει.
Σημείωση : Σε περίπτωση παγκόσμιας εμβέλειας, var
και οι δύο let
θα συμπεριφέρονται με τον ίδιο τρόπο. Για παράδειγμα,
var a = 5; // 5
Η μεταβλητή a θα είναι παγκόσμια και μπορεί να προσεγγιστεί οπουδήποτε στο πρόγραμμα.
let a = 5; // 5
Η μεταβλητή a θα είναι παγκόσμια και μπορεί να προσεγγιστεί οπουδήποτε στο πρόγραμμα.