const

Deklaruje stałą o zasięgu blokowym. Takiej zmiennej nie można ponownie przypisać wartości.

Na tej stronie

Przykład

#
JavaScript
const courseName = 'JavaScript od podstaw'
const maxPoints = 100

try {
  maxPoints = 200
} catch (error) {
  console.log(error.name)
}

console.log(courseName, maxPoints)
Konsola
TypeError
JavaScript od podstaw 100

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

#
Składnia
const name = value
const name1 = value1, name2 = value2

Więcej przykładów

#
Zawartość obiektu i tablicy można zmieniać
JavaScript
const student = { name: 'Ania', points: 120 }
student.points += 30

const tasks = ['HTML']
tasks.push('CSS')

console.log(student)
console.log(tasks)
Konsola
{ name: 'Ania', points: 150 }
['HTML', 'CSS']
Pełna ochrona przez Object.freeze()
JavaScript
const settings = Object.freeze({ theme: 'dark', sounds: true })

try {
  settings.theme = 'light'
} catch (error) {
  console.log(error.name)
}

console.log(settings.theme)
Konsola
TypeError
dark

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 w pętli for...of
JavaScript
const lessons = ['Zmienne', 'Pętle', 'Funkcje']

for (const lesson of lessons) {
  console.log(lesson.toUpperCase())
}
Konsola
ZMIENNE
PĘTLE
FUNKCJE

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 const domyślnie. Przejdź na let dopiero wtedy, gdy zmienna faktycznie musi dostać nową wartość.
  • const nie robi kopii ani nie chroni zawartości. Jeśli obiekt ma zostać nietknięty, zamroź go przez Object.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

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.