const
Deklaruje stałą o zasięgu blokowym. Takiej zmiennej nie można ponownie przypisać wartości.
Przykład
#const courseName = 'JavaScript od podstaw'
const maxPoints = 100
try {
maxPoints = 200
} catch (error) {
console.log(error.name)
}
console.log(courseName, maxPoints)Definicja i zastosowanie
#const tworzy zmienną, której nie da się ponownie przypisać. Wartość podajesz od razu przy deklaracji, a każda późniejsza próba użycia =, += czy ++ na tej nazwie kończy się błędem TypeError.
Stała blokuje samo przypisanie, a nie zawartość. Jeśli trzymasz w niej obiekt albo tablicę, nadal możesz dodawać elementy, usuwać je i zmieniać pola. Nie możesz tylko podmienić całej wartości na inną.
Zasięg jest taki sam jak przy let: blok w nawiasach klamrowych, z martwą strefą czasową przed deklaracją. W nowoczesnym kodzie const to domyślny wybór, bo od razu widać, że nazwa przez cały czas wskazuje na tę samą wartość.
Składnia
#const name = value
const name1 = value1, name2 = value2Więcej przykładów
#const student = { name: 'Ania', points: 120 }
student.points += 30
const tasks = ['HTML']
tasks.push('CSS')
console.log(student)
console.log(tasks)const settings = Object.freeze({ theme: 'dark', sounds: true })
try {
settings.theme = 'light'
} catch (error) {
console.log(error.name)
}
console.log(settings.theme)Przykłady działają jako moduł, czyli w trybie ścisłym, dlatego zapis do zamrożonego obiektu rzuca TypeError. Poza trybem ścisłym zmiana zostałaby po cichu zignorowana.
const lessons = ['Zmienne', 'Pętle', 'Funkcje']
for (const lesson of lessons) {
console.log(lesson.toUpperCase())
}W for...of każdy obrót tworzy nową stałą, więc const działa bez problemu. W klasycznym for (let i = 0; ...) potrzebujesz let, bo licznik się zmienia.
Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Pisz
constdomyślnie. Przejdź naletdopiero wtedy, gdy zmienna faktycznie musi dostać nową wartość. constnie robi kopii ani nie chroni zawartości. Jeśli obiekt ma zostać nietknięty, zamroź go przezObject.freeze()albo twórz nowe obiekty przez spread.- Stałe konfiguracyjne znane z góry często zapisuje się wielkimi literami, np.
MAX_FUEL. To tylko konwencja, język jej nie wymaga.
Powiązane hasła
#- letDeklaruje zmienną o zasięgu blokowym, której wartość można później zmienić.
- varDeklaruje zmienną o zasięgu funkcji. To starszy sposób, dziś zastąpiony przez let i const.
- Object.freeze()Zamraża obiekt, blokując dodawanie, usuwanie i zmianę jego właściwości.
- Spread (...)Składnia spread rozkłada tablicę, napis lub obiekt na pojedyncze elementy: do kopiowania, łączenia i przekazywania argumentów.
Widzisz błąd albo brakuje przykładu? Napisz do nas.