Var Vs Zostaw Javascript
cos |
JavaScript |
sep |
sin
Michael Zippo
Nowe funkcje zostały dodane do języka JavaScript wraz z wydaniem ECMAScript6 (ES6). Jedna z tych cech wpływa na sposób deklarowania zmiennych. Po dodaniu let
i const
pojawiły się różnego rodzaju pytania o to, kiedy używać każdej z deklaracji zmiennych.
W tym W artykule omawiamy każdą z opcji, w odniesieniu do ich definicji i użycia w środowisku JavaScript.
Pre-ES6: Var
Przed wydaniem ES6, słowo kluczowe używane do zmienne były deklaracją var
.
Zmienne mogą być również ponownie deklarowane i aktualizowane bez błędów
Pierwszy problem z var jest oczywisty: ponowne deklarowanie może powodować błędy w kodzie, jeśli zmienna ma już taką samą nazwę. Mogą wystąpić niezamierzone konsekwencje, jeśli coś zostanie ponownie zadeklarowane i nie zdasz sobie sprawy, że nazwa zmiennej została już użyta w bazie kodu. Wraz z tym pojawiają się również inne osobliwości dotyczące zakresu i podnoszenia.
Zakres
Zakres mówi nam, co zmienne są dla nas dostępne do użycia — mamy zmienne, które mogą mieć zasięg globalny lub lokalny. Co zrobić, jeśli mamy tę samą deklarację zmiennej, ale jest ona globalna, a druga lokalna?
Kiedy nasza var jest zadeklarowana poza funkcją, jest dla nas globalnie dostępna globalnie. Gdy w funkcji zadeklarowane jest "hello" , jest ono dostępne tylko dla funkcji - o zakresie funkcjonalnym lub lokalnym
Kiedy mamy deklarację zmiennej, która jest taka sama, ale zakres jest inny, zmienna w funkcji nie zmienia przypisania zmiennej globalnej, nawet przy wywołaniu helloWorld() . Ponieważ var jest zadeklarowana w funkcji o nazwie „hello”, nie wydaje się być w zasięgu globalnym alternatywnej definicji.
Podnoszenie
Kiedy zmienna jest podnoszona w JavaScript, deklaracje funkcji i zmiennych są przenoszone na początek ich zakresu przed wykonaniem kodu. Zmienna jest zadeklarowana, ale nie zainicjowana, więc początkowa wartość zmiennej jest niezdefiniowana.
Tutaj „cześć” jest podnoszone i deklarowane na szczycie Twojego zasięgu. Więc w zasadzie komputer interpretuje kod w następujący sposób:
Silnik JavaScript widzi, że hello istnieje, ale nie wie, jak hello jest zdefiniowane aż do następnego kroku.
W końcu programiści, którzy pomogli w stworzeniu standardu ECMAScript zdał sobie sprawę, że istnieją pewne drobne problemy z var, które mogą kosztować ich czas i pieniądze. Postanowili więc stworzyć bardziej rygorystyczne słowa kluczowe. Doprowadziło to do stworzenia „urlopu” i „kosztu” w ES6
ES6:. Let
Słowo kluczowe let
jest pod wieloma względami bardzo podobne do słowa kluczowego var. Główne różnice to sposób zwracania błędów i definiowania zakresu każdego słowa kluczowego.
Zmienne zadeklarowane i zainicjowane za pomocą słowa kluczowego let
można ponownie przypisać, ale nie można ich ponownie zadeklarować
Gdy uruchamiasz powyższy kod w konsoli JavaScript, ostatnia linia zwraca błąd:
SyntaxError: Identyfikator ` hello` został już zadeklarowany
W przeciwieństwie do var
, deklarowanie zmiennych za pomocą let
nie pozwoli na taką deklarację. Nazwa zmiennej. Możesz jednak zmienić przypisanie, jeśli chcesz, jak pokazano w powyższym przykładzie.
Zakres
Z punktu widzenia mistrza, let
jest bardzo podobny do zmienna
. Oprócz reguł, które daje nam zasięg globalny lub lokalny, istnieje dodatkowe ograniczenie związane z let
. Zmienne zadeklarowane w bloku kodu są dostępne tylko dla tego bloku kodu. Jest to podobne do zakresu funkcjonalnego, ponieważ funkcje są blokami kodu, które mogą być przenoszone jeszcze dalej przez posiadanie oddzielnych bloków w tej funkcji.
W tym kodzie nie ma błędów, ponieważ dwie instancje hello są traktowane jako oddzielne zmienne, ponieważ mają różne zakresy.
Podnoszenie
Podnoszenie to kolejny obszar, w którym deklaracje let i var są podobne. "Var", gdy jest podniesiony, jest inicjowany jako niezdefiniowany. Jednak "leave" generuje błąd odniesienia, jeśli spróbujesz go użyć przed zainicjowaniem.
Zauważ, że słowo kluczowe let jest najlepszym wyborem pod względem składni. Dzieje się tak, ponieważ błędy są generowane, gdy możesz spróbować ponownie zadeklarować zmienną lub użyć jej przed procesem inicjalizacji.
ES6: Const
Słowo kluczowe const
ma bardziej rygorystyczne wytyczne niż let
słowo kluczowe . Za pomocą const
zmiennych nie można deklarować ani ponownie przypisywać. TypeError jest generowany, jeśli spróbujesz ponownie przypisać const
.
To powiedziawszy, podczas pracy z obiektami lub tablicami, właściwości obiektu lub tablicy mogą być aktualizowane. Dopóki podstawowa struktura obiektu lub tabeli nie ulegnie zmianie, zawsze możesz ją zaktualizować.
Jak pokazuje przykład, ponowne przypisanie zadania do nowego zestawu właściwości skutkuje błędem TypeError: Przypisanie do zmiennej stałej.
. Const nie można ponownie przypisać ani ponownie zadeklarować, z wyjątkiem przypadków, gdy aktualizujesz unikatową właściwość w obiekcie