Спецификацията на ES6 въведе два нови начина за деклариране на променливи в JavaScript с ключова думаlet и const. В тази публикация в блога ще се опитам да ви обясня какви променливи създават тези ключови думи и ще ви дам някои съвети кога да ги използвате.

Нека започнем с let ключова дума. Тази ключова дума ни позволява да декларираме локални променливи с блоков обхват. И да ви дам пример:

Вътре в цикъла while на line 4 ние декларираме нова променлива, използвайки ключова дума let и тази променлива има блок вътре в цикъла while за своя обхват. Поради тази причина line 5 регистрира номер 8 в конзолата и line 9 хвърля ReferenceError, тъй като нашата променлива b вече не е налична в този „по-висок“ обхват.

Ако декларирате променлива с ключова дума let в глобален обхват, тя ще бъде достъпна във всички по-ниски обхвати.

Изглежда, че вече не е необходимо да използваме ключова дума var за деклариране на променливи и въпреки че може да изглежда вярно на пръв поглед, бих казал по-долу, че променливите var все още се използват.

Нека първо да видим кога е подходящо да използваме ключова дума let и да разгледаме кода по-долу.

Този код можеше да бъде написан с var i, деклариран в горната част на тялото на функцията foo, което е в съответствие с практиката за винаги деклариране на променливи в горната част на техния обхват.

Някои разработчици обаче обичат да декларират променливи възможно най-близо до първоначалната им употреба и също така чрез деклариране на променлива вътре в декларацията на for цикъла, те искат стилистично да сигнализират на читателя на кода, че променлива i, в този случай принадлежи на for цикъла, така че не трябва да се използва преди или след него, въпреки че е наличен поради правилата за повдигане.

В този случай блокирането на обхвата на променлива чрез използване на ключова дума let има пълен смисъл, тъй като това налага това, което вече е стилистично сигнализирано.

Това обаче не означава, че сега трябва напълно да заменим let с var. Нашата крайна цел трябва да бъде четливостта на кода. Ключовата дума var всъщност ни казва, че създаваме променлива, която искаме да използваме в цялата функция. Ключовата дума let не ни казва това. Неговата позиция го прави, но самата променлива не, така че използването на var в този случай помага за четливостта на кода.

Сега нека разгледаме ключовата дума const. Това ни позволява да създаваме променливи с обхват на блок точно както прави let word или както е дефинирано в MDN: „Тази декларация създава константа, чийто обхват може да бъде глобален или локален за блока, в който е декларирана“.

Този израз „създава константа“ може да създаде някои проблеми с четливостта на кода, тъй като какво е константа? Някои разработчици смятат, че константите са променливи, които съдържат стойности, които не могат да бъдат променяни. Дори ще изтегля цитат от Уикипедия за постоянните стойности „ В „компютърното програмиране“ константата е „стойност“, която не може да бъде променена от „програмата“ по време на нормално изпълнение, т.е. стойността е постоянна.”.

Знаем, че const създава константа, така че какво мислите, че кодът по-долу ще регистрира:

Опитахте ли да отговорите? Ако отговорът ви е бил [1, 2, 3], грешите. Този код всъщност регистрира [’a’, 2, 3] Чакайте какво? Как е възможно това, не е ли случай, че стойността вътре в константата не може да бъде променена? Ами не, константата е променлива, която не може да бъде преназначена. Няма нищо общо със стойността. Или както можем да видим в примера по-долу:

Така че променливата не може да бъде преназначена, но самата стойност, която променливата препраща, може да бъде променена, ако е променлива стойност (като масив).

В крайна сметка с const ние по същество съобщаваме, че променливата никога няма да бъде преназначена вътре в обхвата, където е била декларирана.

Кога да го използвам? Където вече сте използвали имена на променливи с главни букви, т.е. var PI = 3.14; започнете да използвате const. Има смисъл, тъй като тези променливи не са предназначени да бъдат преназначавани по-късно. Както Кайл Симпсън каза в книгата си You don't know JS : „По същество const декларациите налагат това, което сме стилистично сигнализирали с нашия код от години, където декларирахме име на променлива от всички главни букви и му присвоихме някакъв литерал стойност, която се погрижихме никога да не променяме.“

Честото им използване обаче може да повлияе на четливостта на вашия код, тъй като има разработчици, които ще повярват, че константите означават, че стойностите са неизменни, което не е така, както е показано по-горе, и може да доведе до известно объркване.

Надяваме се, че тази публикация ви даде малко представа кога да създавате променливи с помощта на let и const ключови думи.

Накратко, трябва да следвате ръководството за стил на JavaScript, което предлага вашата компания, тъй като това гарантира, че целият екип е на една и съща страница. Едно от най-популярните ръководства за стил е Airbnb JavaScript Style Guide. В него се посочва, че трябва да използвате предимно const за създаване на променливи и когато възнамерявате да ги преназначите някъде в кода, използвайте let и избягвайте използването на ключова дума var за пълно създаване на променливи.

Използването на const предимно за декларации на променливи може да създаде проблеми с четливостта на кода поради причината, която посочих по-горе, така че би имало смисъл да използвате предимно ключови думи var, но когато искате да създадете променлива, чийто обхват е само блок, използвайте let и когато искате да създадете променлива, която няма да бъде преназначена никъде другаде в кода, използвайте const. *Забележка*: този съвет е напълно субективен, повлиян от учението на Кайл Симпсън, автор на You don’t know JS.