Stała JavaScript
Słowo const
kluczowe zostało wprowadzone w
ES6 (2015) .
Zmienne zdefiniowane za const
pomocą nie mogą być ponownie zadeklarowane.
Zmienne zdefiniowane za const
pomocą nie mogą być ponownie przypisane.
Zmienne zdefiniowane za pomocą const
mają zasięg bloku.
Nie można ponownie przypisać
Zmienna const
nie może być ponownie przypisana:
Przykład
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
Musi być przypisany
Zmienne JavaScript const
muszą mieć przypisaną wartość, gdy są deklarowane:
Prawidłowy
const PI = 3.14159265359;
Błędny
const PI;
PI = 3.14159265359;
Kiedy używać stałej JavaScript?
Zgodnie z ogólną zasadą, zawsze deklaruj zmienną z const
, chyba że wiesz, że wartość ulegnie zmianie.
Użyj const
, gdy deklarujesz:
- Nowa tablica
- Nowy obiekt
- Nowa funkcja
- Nowy RegExp
Obiekty stałe i tablice
Słowo kluczowe const
jest trochę mylące.
Nie definiuje stałej wartości. Definiuje stałe odniesienie do wartości.
Z tego powodu NIE MOŻESZ:
- Przypisz ponownie stałą wartość
- Przypisz ponownie stałą tablicę
- Przypisz ponownie stały obiekt
- Zmień elementy stałej tablicy
- Zmień właściwości obiektu stałego
Ale ty możesz:
Tablice stałe
Możesz zmienić elementy tablicy stałej:
Przykład
// 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");
Ale NIE możesz zmienić przypisania tablicy:
Przykład
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Obiekty stałe
Możesz zmienić właściwości obiektu stałego:
Przykład
// 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";
Ale NIE możesz zmienić przypisania obiektu:
Przykład
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; //
ERROR
Obsługa przeglądarki
Słowo const
kluczowe nie jest obsługiwane w programie Internet Explorer 10 lub starszym.
Poniższa tabela przedstawia pierwsze wersje przeglądarek z pełną obsługą const
słowa kluczowego:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Zakres bloku
Deklarowanie zmiennej with const
jest podobne do let
deklarowania Block Scope .
x zadeklarowany w bloku, w tym przykładzie, nie jest taki sam jak x zadeklarowany poza blokiem:
Przykład
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
Możesz dowiedzieć się więcej o zasięgu blokowym w rozdziale Zakres JavaScript .
Ponowne deklarowanie
Ponowne zadeklarowanie zmiennej JavaScript var
jest dozwolone w dowolnym miejscu programu:
Przykład
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
Ponowne zadeklarowanie istniejącej var
lub let
zmiennej na const
, w tym samym zakresie, jest niedozwolone:
Przykład
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
}
Ponowne przypisanie istniejącej const
zmiennej w tym samym zakresie jest niedozwolone:
Przykład
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
}
Ponowne zadeklarowanie zmiennej z const
, w innym zakresie lub w innym bloku jest dozwolone:
Przykład
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Const Podnoszenie
Zmienne zdefiniowane za pomocą var
są podnoszone do góry i można je zainicjować w dowolnym momencie.
Znaczenie: Możesz użyć zmiennej przed jej zadeklarowaniem:
Przykład
To jest wporządku:
carName = "Volvo";
var carName;
Jeśli chcesz dowiedzieć się więcej o podnoszeniu, przeczytaj rozdział JavaScript Podnoszenie .
Zmienne zdefiniowane za pomocą const
są również podnoszone na górę, ale nie są inicjowane.
Znaczenie: Użycie const
zmiennej przed jej zadeklarowaniem spowoduje
ReferenceError
:
Przykład
alert (carName);
const carName = "Volvo";