Hoisting Demystified: jasne zrozumienie dla programistów JavaScript

Jan 25 2023
Podnoszenie to jedno z tych pojęć w JavaScript, które często dezorientuje programistów, zwłaszcza podczas rozmów kwalifikacyjnych. Wielu programistów ma trudności z wyjaśnieniem różnicy między podnoszeniem zmiennych var, let i const oraz tego, jak wpływa to na wykonywanie ich kodu.

Podnoszenie to jedno z tych pojęć w JavaScript, które często dezorientuje programistów, zwłaszcza podczas rozmów kwalifikacyjnych. Wielu programistów ma trudności z wyjaśnieniem różnicy między podnoszeniem zmiennych var, leti constzmiennych oraz tego, jak wpływa to na wykonywanie ich kodu. Może to prowadzić do pocenia się i nerwowości podczas wywiadów. Jednak dzięki informacjom zawartym w tym artykule zrozumienie podnoszenia powinno być dziecinnie proste. Poprzez podanie przykładów i wyjaśnień zachowania podnoszenia, ten artykuł ma na celu wyjaśnienie tej koncepcji i ułatwienie programistom zrozumienia i wyjaśnienia podnoszenia w JavaScript. Teraz będziesz w stanie pewnie wyjaśnić swojemu rekruterowi, na czym polega podnoszenie ciężarów i zaliczyć rozmowę kwalifikacyjną.

Najpierw odświeżmy naszą pamięć na temat podnoszenia za pomocą var. Wszyscy wiemy, że zmienne zadeklarowane za pomocą varsą podnoszone na górę swojego zakresu, prawda? Ale czy wiesz, że podnoszona jest tylko deklaracja, a nie inicjalizacja? Sprawdź to:

console.log(num); // undefined
var num = 10;
console.log(num); // 10

Porozmawiajmy teraz o podnoszeniu za pomocą leti const. Istnieje powszechne błędne przekonanie, że leti constnie są podnoszone, ale to nieprawda. Te dwa słowa kluczowe są podobne pod tym względem, że oba znajdują się na szczycie swojego zakresu, podobnie jak var. Istnieje jednak zasadnicza różnica między nimi. Gdy spróbujesz uzyskać dostęp do zmiennej letlub constprzed jej zadeklarowaniem, otrzymasz błąd ReferenceError: Cannot access 'num' before initialization. Dzieje się tak, ponieważ te zmienne są podnoszone bez domyślnej inicjalizacji, w przeciwieństwie do var.

{
console.log(num); // ReferenceError: Cannot access 'num' before initialization
let num = 10;
console.log(num);
}

Można by się zastanawiać, w jaki sposób zachowanie dostępu do zmiennej zadeklarowanej z inicjalizacją letlub constprzed nią różni się od dostępu do niezadeklarowanej zmiennej. Różnica polega na komunikacie o błędzie. Weźmy przykład:

{
console.log(stuff); // ReferenceError: stuff is not defined
console.log(goodStuff); // ReferenceError: Cannot access 'goodStuff' before initialization
let goodStuff = "Something really good";
}

Podsumowując, mam nadzieję, że ten artykuł pomógł ci zrozumieć podnoszenie w JavaScript i sposób, w jaki działa z różnymi typami zmiennych. Ta koncepcja może być trudna, ale dzięki jej zrozumieniu możesz pisać lepszy i wydajniejszy kod. Ćwicz i eksperymentuj z kodem, aby dalej doskonalić swoje umiejętności. Miłego kodowania!