променливи let и const

Нека обхватът на променливата е блок.

Както си спомняме, променлива, декларирана чрез var, се вижда навсякъде във функцията.

Променлива, декларирана с let, се вижда само в блока, в който е декларирана.

Например променлива чрез var:

В примера по-горе apples е една променлива за целия код, който е модифициран в if.

Същото с let ще работи по различен начин:

Тук всъщност има две независими променливи apples, едната е глобална, втората е в блока if.

Това е така, защото променливата let винаги се вижда точно в блока, където е декларирана, и не повече.

Такъв достъп ще доведе до грешка:

Обърнете внимание също, че променливите let не могат да бъдат повторно декларирани. Тоест този код ще изведе грешка:

Това - въпреки че изглежда като ограничение в сравнение с var, но всъщност не създава проблеми. Например два такива цикъла изобщо не са в конфликт:

Когато се използва в цикъл, се създава променлива за всяка итерация.

Променливата var е една за всички итерации на цикъла и се вижда дори след цикъла:

С променливата let всичко е различно.

Това улеснява решаването на класическия проблем със затварянето, описан в проблема с армията от функции.

Декларацията const дефинира константа, тоест променлива, която не може да бъде променена:

Имайте предвид, че ако даден обект е присвоен на константа, тогава самата константа е защитена от промяна, но не и свойствата в нея:

Същото важи и ако на константата е присвоена стойност на масив или друг обект.

Константите, които винаги са твърдо кодирани в цялата програма, обикновено се пишат с главни букви. Например: const ORANGE = "#ffa500" .

Повечето променливи са константи в различен смисъл: те не се променят, след като бъдат присвоени. Нотази стойност може да бъде различна за различните стартирания на функции. За такива променливи можете да използвате const и обикновени малки букви в името.

Променлива const е константа, в противен случай точно като let.