Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Czym różni się var od let w Javascript?

Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
W JavaScript var i let to słowa kluczowe, które są używane do deklaracji zmiennych, ale mają kilka różnic w zachowaniu.

Zakres widoczności

var ma zakres widoczności na poziomie funkcji (function-scoped). Oznacza to, że zmienne zadeklarowane przy użyciu var są zdefiniowane w ramach funkcji i nie są dostępne poza nią.
function example() {
  if (true) {
    var x = 10;
    console.log(x); // dostępne
  }
  console.log(x); // dostępne
}
let ma blokowy zakres widoczności (block-scoped), co oznacza, że jest zdefiniowane w bloku kodu (np. w instrukcjach warunkowych lub pętlach) i nie jest dostępne poza ich granicami.
function example() {
  if (true) {
    let y = 20;
    console.log(y); // dostępne
  }
  console.log(y); // niedostępne
}

Podnoszenie (hoisting)

Zmiennie zadeklarowane za pomocą var są podnoszone (hoisted) na górę funkcji lub obiektu globalnego, co oznacza, że można ich używać przed ich faktyczną deklaracją.
console.log(a); // undefined
var a = 5;
console.log(a); // 5
Zmiennie zadeklarowane za pomocą let również są podnoszone, ale nie można ich używać przed ich deklaracją.
console.log(b); // ReferenceError: b is not defined
let b = 10;
console.log(b); // 10

Czemu preferuje się let?

Blokowy zakres widoczności:
Pozwala uniknąć nieprzewidywalnych sytuacji, gdy zmienne zadeklarowane za pomocą var mogą być używane poza blokami.
Brak problemów z podnoszeniem (hoisting):
Zmiennie zadeklarowane za pomocą let również są podnoszone, ale ich użycie przed deklaracją skutkuje ReferenceError. Ułatwia to zrozumienie kodu, ponieważ zmienne nie mają wartości undefined, dopóki nie zostaną im przypisane wartości.
Zmniejszenie konfliktów nazw:
Użycie let może pomóc uniknąć sytuacji, w których w kodzie występują konflikty z powodu ponownego użycia nazw zmiennych. Ponieważ let ma blokowy zakres widoczności, pozwala na użycie tej samej nazwy dla zmiennych w różnych blokach kodu bez konfliktów.
Łatwiejsze błędy w czasie wykonania:
Użycie let może prowadzić do bardziej zrozumiałych błędów w czasie wykonania kodu. Na przykład, próba użycia zmiennej przed jej deklaracją spowoduje ReferenceError, co ułatwia wykrywanie błędów.
Czystość kodu:
Nowoczesne lintery preferują let jako bardziej niezawodną i przewidywalną opcję deklaracji zmiennych. Na przykład, istnieje linter (linter) dla JavaScript, który nazywa się "eslint" i ma regułę o nazwie "no-var". Ta reguła ma na celu wykrywanie użycia słowa kluczowego var w kodzie i zalecanie jego zastąpienia nowocześniejszymi słowami kluczowymi, takimi jak let lub const.

Ten post nie ma jeszcze żadnych dodatków od autora.

24 lip 11:02

Co to jest apt-get w Ubuntu?

meme code
meme code@memecode
24 lip 11:25

Jak zainstalować Steam w Ubuntu? Instalacja Steam przez terminal.

meme code
meme code@memecode
24 lip 11:47

Jak zmienić język w Steam na ukraiński?

meme code
meme code@memecode
24 lip 12:01

Co to jest "Przetwarzanie shaderów Vulkan" w Steam?

meme code
meme code@memecode
24 lip 12:17

Jak ustawić Counter-Strike: GO w Ubuntu na pełny ekran bez uruchamiania gry?

meme code
meme code@memecode
20 lis 19:35

Jak przywrócić usunięty plik (Trix), który był przechowywany na Amazon S3?

meme code
meme code@memecode
7 gru 07:42

Czym jest enkapsulacja (encapsulation) w OOP?

meme code
meme code@memecode
7 gru 08:13

Kontrola widoczności w Ruby (public, private i protected)

meme code
meme code@memecode
7 gru 08:25

Czym jest OOP (programowanie obiektowe)?

meme code
meme code@memecode
9 gru 12:00

Czym jest dziedziczenie w Ruby? Przykłady złego i dobrego dziedziczenia.

meme code
meme code@memecode
9 gru 12:15

Czym są najlepsze praktyki w programowaniu?

meme code
meme code@memecode
9 gru 12:21

Czym jest polimorfizm? Przykład użycia polimorfizmu w Ruby.

meme code
meme code@memecode