Το 2015, η JavaScript εισήγαγε μια σημαντική νέα λέξη-κλειδί: const
.
Έχει γίνει κοινή πρακτική να δηλώνουμε πίνακες χρησιμοποιώντας const
:
const cars = ["Saab", "Volvo", "BMW"];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Ένας πίνακας που δηλώνεται με const
δεν μπορεί να αντιστοιχιστεί εκ νέου:
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>
Η λέξη-κλειδί 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
δεν υποστηρίζεται στον Internet Explorer 10 ή παλαιότερη έκδοση.
Ο παρακάτω πίνακας ορίζει τις πρώτες εκδόσεις του προγράμματος περιήγησης με πλήρη υποστήριξη για τη λέξη-κλειδί const
:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Στις μεταβλητές const
JavaScript πρέπει να εκχωρηθεί μια τιμή όταν δηλώνονται: <p>Σημασία: Ένας πίνακας που δηλώνεται με const
πρέπει να αρχικοποιηθεί όταν δηλωθεί.
Η χρήση του const
χωρίς προετοιμασία του πίνακα είναι σύνταξη λάθος:
Αυτό δεν θα λειτουργήσει:
const cars;
cars = ["Saab", "Volvo", "BMW"];
Οι πίνακες που δηλώνονται με var
μπορούν να αρχικοποιηθούν ανά πάσα στιγμή.
Μπορείτε ακόμη και να χρησιμοποιήσετε τον πίνακα πριν δηλωθεί:
Αυτό είναι εντάξει:
cars = ["Saab", "Volvo", "BMW"];
var cars;
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>JavaScript Hoisting</h2>
<p id="demo"></p>
<script>
cars = ["Saab", "Volvo", "BMW"];
var cars;
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Ένας πίνακας που δηλώνεται με const
έχει Εύρος αποκλεισμού.
Ένας πίνακας που δηλώνεται σε ένα μπλοκ δεν είναι ο ίδιος με έναν πίνακα που δηλώνεται εκτός του μπλοκ:
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
const cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Declaring an Array Using const</h2>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
const cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Ένας πίνακας που δηλώνεται με var
δεν έχει εύρος μπλοκ:
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
var cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Declaring an Array Using var</h2>
<p id="demo"></p>
<script>
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
var cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Μπορείτε να μάθετε περισσότερα για το Block Scope στο κεφάλαιο: JavaScript Scope.
Η εκ νέου δήλωση ενός πίνακα που έχει δηλωθεί με var
επιτρέπεται οπουδήποτε σε ένα πρόγραμμα:
var cars = ["Volvo", "BMW"]; // Allowed
var cars = ["Toyota", "BMW"]; // Allowed
cars = ["Volvo", "Saab"]; // Allowed
Εκ νέου δήλωση ή εκ νέου αντιστοίχιση ενός πίνακα σε const
, στο ίδιο εύρος ή σε το ίδιο μπλοκ, δεν επιτρέπεται:
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
{
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
}
Εκ νέου δήλωση ή εκ νέου αντιστοίχιση ενός υπάρχοντος πίνακα const
, στο ίδιο εύρος ή σε το ίδιο μπλοκ, δεν επιτρέπεται:
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
}
Επιτρέπεται η εκ νέου δήλωση ενός πίνακα με const
, σε άλλο εύρος ή σε άλλο μπλοκ:
const cars = ["Volvo", "BMW"]; // Allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
}
{
const cars = ["Volvo", "BMW"]; // Allowed
}
Για μια πλήρη αναφορά σε πίνακα, μεταβείτε στη διεύθυνση μας:
Ολοκληρώστε την αναφορά πίνακα JavaScript.
Η αναφορά περιέχει περιγραφές και παραδείγματα όλων των Array ιδιότητες και μεθόδους.