Niegdyś nie było sporu jak deklarować zmienne, był tylko var. Nadszedł jednak ES 6 i namieszał, ale dlaczego?
Var od początku stwarzał problemy, przede wszystkim dlatego że nie było rozróżnienia na wartość stałą i zmienną. Ale największą bolączką programistów był zasięg zmiennych var.
Przez to że var miał zasięg w obrębie całej funkcji, powodowało to bardzo dużą nieczytelność w kodzie oraz ból głowy podczas zastanawiania się skąd wzięła się ta zmienna? Między innymi dlatego z var nie korzystamy nigdy!
Więc co wybrać? let czy const?
W przypadku let i const zasięg zmiennych jest od klamry do klamry co rozwiązuje większość problemów, ale żeby odpowiednio wybrać, trzeba się zagłębić w przeznaczenie tych deklaracji. Słowo kluczowe let, pozwala nam stworzyć zmienną w której możemy zmieniać referencję a const przeciwnie. Const dodatkowo zabrania nam ponowne przypisanie zmiennych. Co za tym idzie, jeżeli chcemy zadeklarować typ prosty (string, boolean, number itd. ) który będziemy w przyszłości zmieniać powinniśmy użyć let. Jeżeli chcemy zaś stworzyć stałą użyjemy zwyczajnie const.
Co z typami referencyjnymi?
Tutaj zawsze korzystamy z const. Dlatego że zmiana wartości pola w obiekcie czy elementu tablicy nie zmieni nam referencji. Jest to jeden z najpopularniejszych błędów młodych programistów. Gdy tworzą tablicę lub obiekt, deklarują je za pomocą let, bo przecież chcą docelowo zmieniać wartości wewnątrz. Nic bardziej mylnego.
Słowo kluczowe const, jak wspomniałem wcześniej, służy nam do przypisania referencji, czyli wskazania nam w pamięci konkretnego “obiektu”. Nie możemy do const przypisać nowego “obiektu”, ale możemy go edytować, (dodawać/usuwać/edytować elementy tablic i obiektów).
Dlaczego najlepiej korzystać tylko z const
Odpowiedź jest prosta, łatwiej zapanować nad kodem. Gdy korzystamy z dużej ilość zmiennych zadeklarowanych za pomocą let, często musimy sprawdzać krok po kroku czy gdzieś przypadkiem nam się coś nie nadpisuje. Gdy używamy const, każde kolejne przypisanie jest nam określane jako błąd przez nasz kochany kompilator, co zostanie nam oznajmione pięknym czerwonym napisem.
Ktoś na pewno zapyta, “To jak mam w takim razie przypisać coś do zmiennej const, jak jeszcze nie wiem co tam ma być”.