Εισήχθη η λέξη-κλειδί const
ES6 (2015)
Οι μεταβλητές που ορίζονται με const
δεν μπορούν να δηλωθούν ξανά
Οι μεταβλητές που ορίζονται με const
δεν μπορούν να εκχωρηθούν ξανά
Οι μεταβλητές που ορίζονται με const
έχουν Εύρος αποκλεισμού
Δεν είναι δυνατή η εκ νέου αντιστοίχιση μιας μεταβλητής const
:
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p id="demo"></p>
<script>
try {
const PI = 3.141592653589793;
PI = 3.14;
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Στις μεταβλητές const
JavaScript πρέπει να εκχωρηθεί μια τιμή όταν δηλώνονται:
const PI = 3.14159265359;
const PI;
PI = 3.14159265359;
Να δηλώνετε πάντα μια μεταβλητή με const
όταν γνωρίζετε ότι η τιμή δεν πρέπει να αλλάξει.
Χρησιμοποιήστε το const
όταν δηλώνετε:
Ένας νέος πίνακας
Ένα νέο αντικείμενο
Μια νέα Λειτουργία
Ένα νέο RegExp
Η λέξη-κλειδί const
είναι λίγο παραπλανητική.
Δεν ορίζει σταθερή τιμή. Ορίζει μια σταθερή αναφορά σε μια τιμή.
Εξαιτίας αυτού ΔΕΝ μπορείτε:
Εκχωρήστε ξανά μια σταθερή τιμή
Εκ νέου αντιστοίχιση ενός σταθερού πίνακα
Εκ νέου αντιστοίχιση ενός σταθερού αντικειμένου
Αλλά μπορείς:
Αλλάξτε τα στοιχεία του σταθερού πίνακα
Αλλάξτε τις ιδιότητες του σταθερού αντικειμένου
Μπορείτε να αλλάξετε τα στοιχεία ενός σταθερού πίνακα:
// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>Declaring a constant array does NOT make the elements unchangeable:</p>
<p id="demo"></p>
<script>
// Create an Array:
const cars = ["Saab", "Volvo", "BMW"];
// Change an element:
cars[0] = "Toyota";
// Add an element:
cars.push("Audi");
// Display the Array:
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Αλλά ΔΕΝ μπορείτε να εκχωρήσετε ξανά τον πίνακα:
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>You can NOT reassign a constant array:</p>
<p id="demo"></p>
<script>
try {
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Μπορείτε να αλλάξετε τις ιδιότητες ενός σταθερού αντικειμένου:
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>Declaring a constant object does NOT make the objects properties unchangeable:</p>
<p id="demo"></p>
<script>
// Create an object:
const car = {type:"Fiat", model:"500", color:"white"};
// Change a property:
car.color = "red";
// Add a property:
car.owner = "Johnson";
// Display the property:
document.getElementById("demo").innerHTML = "Car owner is " + car.owner;
</script>
</body>
</html>
Αλλά ΔΕΝ μπορείτε να εκχωρήσετε ξανά το αντικείμενο:
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; //
ERROR
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>You can NOT reassign a constant object:</p>
<p id="demo"></p>
<script>
try {
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"};
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Scope | Redeclare | Reassign | Hoisted | Binds this | |
var | No | Yes | Yes | Yes | Yes |
let | Yes | No | Yes | No | No |
const | Yes | No | No | No | No |
ας
και const
έχουν μπλοκ εμβέλειας.
ας
και const
δεν μπορεί να επαναδηλωθεί.
ας
και const
πρέπει να δηλωθεί πριν από τη χρήση.
ας
και const
δεν δεσμεύεται σε αυτό
.
ας
και const
δεν ανυψώνονται.
Το var
δεν χρειάζεται να δηλωθεί.
Το var
ανυψώνεται.
Το var
συνδέεται με αυτό.
Οι λέξεις-κλειδιά let
και const
είναι δεν υποστηρίζεται στον Internet Explorer 11 ή παλαιότερη έκδοση.
Ο παρακάτω πίνακας ορίζει τις πρώτες εκδόσεις του προγράμματος περιήγησης με πλήρη υποστήριξη:
Chrome 49 | Edge 12 | Firefox 36 | Safari 11 | Opera 36 |
Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Η δήλωση μιας μεταβλητής με const
είναι παρόμοια με το let
όταν πρόκειται για Εύρος αποκλεισμού.
Το x που δηλώνεται στο μπλοκ, σε αυτό το παράδειγμα, δεν είναι το ίδιο με το x που δηλώνεται εκτός του μπλοκ:
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScropt const variables has block scope</h2>
<p id="demo"></p>
<script>
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
document.getElementById("demo").innerHTML = "x is " + x;
</script>
</body>
</html>
Μπορείτε να μάθετε περισσότερα σχετικά με το εύρος μπλοκ στο κεφάλαιο Πεδίο εφαρμογής JavaScript.
Επιτρέπεται η εκ νέου δήλωση μιας μεταβλητής JavaScript var
οπουδήποτε σε ένα πρόγραμμα:
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
Εκ νέου δήλωση ενός υπάρχοντος var
ή let
μεταβλητή σε const
, στο ίδιο εύρος, δεν επιτρέπεται:
var x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}
Η εκ νέου αντιστοίχιση μιας υπάρχουσας μεταβλητής const
, στο ίδιο πεδίο, δεν επιτρέπεται:
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{ const x = 2; // Allowed
x = 2;
// Not allowed
var x = 2;
// Not allowed
let x = 2;
// Not allowed
const x = 2; // Not allowed
}
Επιτρέπεται η εκ νέου δήλωση μεταβλητής με const
, σε άλλο εύρος ή σε άλλο μπλοκ:
const x = 2; // Allowed
{ const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Οι μεταβλητές που ορίζονται με var
ανυψώνονται στην κορυφή και μπορεί να αρχικοποιηθεί ανά πάσα στιγμή.
Σημασία: Μπορείτε να χρησιμοποιήσετε τη μεταβλητή πριν δηλωθεί:
Αυτό είναι εντάξει:
carName = "Volvo";
var carName;
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Hoisting</h2>
<p>With <b>var</b>, you can use a variable before it is declared:</p>
<p id="demo"></p>
<script>
carName = "Volvo";
document.getElementById("demo").innerHTML = carName;
var carName;
</script>
</body>
</html>
Εάν θέλετε να μάθετε περισσότερα για την ανύψωση, μελετήστε το κεφάλαιο Ανύψωση JavaScript. <p>Οι μεταβλητές που ορίζονται με const
ανυψώνονται επίσης στην κορυφή, αλλά δεν έχει αρχικοποιηθεί.
Σημασία: Η χρήση μιας μεταβλητής const
πριν δηλωθεί θα έχει ως αποτέλεσμα Σφάλμα αναφοράς
:
alert (carName);
const carName = "Volvo";
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Hoisting</h2>
<p>With <b>const</b>, you cannot use a variable before it is declared:</p>
<p id="demo"></p>
<script>
try {
alert(carName);
const carName = "Volvo";
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>