ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «var»

Π’ самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΡ‹ ознакомились с трСмя способами объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

let ΠΈ const Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ лСксичСскому ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ, области видимости.

Но var – это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π²Π΅Ρ€ΡŒ, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠΉ своё Π½Π°Ρ‡Π°Π»ΠΎ с Π΄Π°Π²Π½ΠΈΡ… Π²Ρ€Π΅ΠΌΡ‘Π½. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ var Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² соврСмСнных скриптах, Π½ΠΎ всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² старых.

Если Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ скриптами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΡ‚ΡŒ шанс, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с var Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

β€¦ΠžΠ΄Π½Π°ΠΊΠΎ, отличия всё ΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

Для Β«varΒ» Π½Π΅ сущСствуСт Π±Π»ΠΎΡ‡Π½ΠΎΠΉ области видимости

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var ограничиваСтся Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π»ΠΈΠ±ΠΎ, Ссли пСрСмСнная глобальная, Ρ‚ΠΎ скриптом. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ доступны Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠ°.

Аналогично для Ρ†ΠΈΠΊΠ»ΠΎΠ²: var Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ»ΠΈ локальной Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°:

Если Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ var становится локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Β«varΒ» допускаСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС

Если Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ пСрСмСнная ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

Β«varΒ» ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ запуска Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΈΠ»ΠΈ запуска скрипта, Ссли пСрСмСнная являСтся глобальной).

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ var ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ с самого Π½Π°Ρ‡Π°Π»Π° исполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ находятся ΠΈΡ… объявлСния (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ находятся Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

…ВСхничСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ эквивалСнтСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ (объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ var phrase ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ):

β€¦Π˜ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ΄Ρƒ Π½ΠΈΠΆΠ΅ (ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, блочная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости игнорируСтся):

Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ называСтся Β«hoistingΒ» (всплытиС, поднятиС), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var Β«Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚Β» Π² самый Π²Π΅Ρ€Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Β«Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚Β», Π½ΠΎ присваивания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ – Π½Π΅Ρ‚.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° var phrase = «ΠŸΡ€ΠΈΠ²Π΅Ρ‚» состоит ΠΈΠ· Π΄Π²ΡƒΡ… дСйствий:

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ обрабатываСтся Π² Π½Π°Ρ‡Π°Π»Π΅ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ («всплываСт»), ΠΎΠ΄Π½Π°ΠΊΠΎ присвоСниС значСния всСгда происходит Π² Ρ‚ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ ΠΎΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ. Π’.Π΅. ΠΊΠΎΠ΄ выполняСтся ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… Π² любом мСстС. Однако, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined Π΄ΠΎ строки с присвоСниСм значСния.

Π˜Ρ‚ΠΎΠ³ΠΎ

БущСствуСт 2 основных отличия var ΠΎΡ‚ let/const :

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ нСбольшоС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅, относящССся ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΌΡ‹ рассмотрим Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

Π­Ρ‚ΠΈ особСнности, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΊΠΎΠ΄. Блочная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости – это ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ let ΠΈ const Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² стандарт ΠΈ сСйчас ΡΠ²Π»ΡΡŽΡ‚ΡΡ основным способом объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

МоТно Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ var ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, инициализируя Π΅Ρ‘, ΠΏΡ€ΠΈ нСобходимости.

Бинтаксис

ОписаниС

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ значСния нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΊΠ°ΠΊ глобальная пСрСмСнная (пСрСмСнная становится свойством глобального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) послС выполнСния присваивания значСния. Различия ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСнной ΠΈ нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

1. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ контСкстом выполнСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. ΠΠ΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ всСгда Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹.

2. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ выполнСния любого ΠΊΠΎΠ΄Π°. ΠΠ΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΊ Π½ΠΈΠΌ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ присваиваниС.

3. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, нСзависимо ΠΎΡ‚ контСкста выполнСния, ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСнастраиваСмыми свойствами. ΠΠ΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ это настраиваСмыС свойства (Ρ‚.Π΅. ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ).

Из-Π·Π° пСрСчислСнных Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ, использованиС Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмым послСдствиям. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ всСгда ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π²Π½Π΅ зависимости, находятся ΠΎΠ½ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π² глобальном контСкстС. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ значСния нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² строгом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ECMAScript 5 Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ объявлСния) ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ выполнСния ΠΊΠΎΠ΄Π°. Π“Π΄Π΅ Π±Ρ‹ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ объявлСниС, это Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ объявили Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная становится доступной Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° объявлСна. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ называСтся «ΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ΠΌ» (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… источниках «Π²ΡΠΏΠ»Ρ‹Ρ‚ΠΈΠ΅ΠΌ»).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΡ… области видимости (Π² Π½Π°Ρ‡Π°Π»ΠΎ глобального ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚.Π΅. ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ), Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ†Π΅ΠΏΠΈ областСй видимости (Ρ‚.Π΅. ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ).

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ подъСм Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΅Ρ‘ значСния. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ присваиваСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var, let ΠΈ const Π² Javascript [ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Tyler’а McGinnis]

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«var vs let vs const in JavaScriptΒ» Π°Π²Ρ‚ΠΎΡ€Π° Tyler McGinnis.

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ 2 Π½ΠΎΠ²Ρ‹Ρ… способа для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Javascript (ES6), let ΠΈ const. На протяТСнии этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ var, let ΠΈ const, Π° Ρ‚Π°ΠΊΠΆΠ΅ смСТныС Ρ‚Π΅ΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: β€œΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π±Π»ΠΎΡ‡Π½ΠΎΠΉ области Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΠΈβ€œ, β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅β€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎ, посмотритС это (ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π½Π° английском):

ES2015 (ΠΈΠ»ΠΈ ES6) прСдставил Π½Π°ΠΌ 2 Π½ΠΎΠ²Ρ‹Ρ… способа для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, let ΠΈ const. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ углубимся Π² различия ΠΌΠ΅ΠΆΠ΄Ρƒ var, let ΠΈ const, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ слСдуСт ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Π­Ρ‚ΠΎ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… инициализация, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости (особая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈ β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅β€.

ОбъявлСниС ΠΈ инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ β€œdeclaration”. Π’ Javascript, ΠΏΡ€ΠΈ создании, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ undefined. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ declaration, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ undefined.

И Ρ‚Π°ΠΊ, ΠΌΡ‹ Π²Ρ‹Π²Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ declaration ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ undefined.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· устанавливаСтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

И Ρ‚Π°ΠΊ, здСсь ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ declaration записывая Π² Π½Π΅Ρ‘ строку.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ нас ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости

β€œΠ•ΡΠ»ΠΈ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, пСрСмСнная опрСдСляСтся Π² локальной области видимости этой функции…”

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ создадитС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ var, ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ функция Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° создана ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ снаруТи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° объявлСна. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ date являСтся функция getDate, ΠΎΠ½Π° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² getDate(ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ массив prices ΠΈ Π½Π°ΠΌ трСбуСтся функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ этот массив, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ discount, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ массив Ρ†Π΅Π½ со скидками. ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ†Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

И рСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Выглядит достаточно просто, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊ области видимости Π±Π»ΠΎΠΊΠ°? ВзглянитС Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for. Доступны Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ доступны.

Если JavaScript это СдинствСнный язык программирования ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ особо ΠΈ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ± этом. Однако, Ссли Π²Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² JavaScript ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка программирования, Π² частности языка программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π²Ρ‹, вСроятно, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ обСспокоСны Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ здСсь происходит.

Оно Π½Π΅ сломано, просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ странно. На самом Π΄Π΅Π»Π΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ i, discountPrice ΠΈ finalPrice Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π° for. Π­Ρ‚ΠΎ Π½Π΅ приносит Π½Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ принСсти Π½Π°ΠΌ Π²Ρ€Π΅Π΄ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях. Однако, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ var, ΠΎΠ½ΠΈ входят Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ обсудили объявлСниС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ области видимости, Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Π²Π΅Ρ‰ΡŒ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ погрузимся Π² Ρ€Π°Π·Π±ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ let ΠΈ const, это β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅β€.

β€œΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅β€

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ сказано β€œΠ’ Javascript, ΠΏΡ€ΠΈ создании, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ undefined β€œ. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ это ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅β€. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ JavaScript Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined Π²ΠΎ врСмя Ρ„Π°Π·Ρ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ β€œΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅β€.

Для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ изучСния Ρ„Π°Π·Ρ‹ Боздания, β€œΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΡβ€ ΠΈ областСй видимости ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ: β€œThe Ultimate Guide to Hoisting, Scopes, and Closures in JavaScript”.

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅β€ влияСт Π½Π° Π½Π΅Π³ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, всСм ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π±Ρ‹Π»ΠΎ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ…, Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π° самом Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ объявлСна, Π²Ρ‹ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ undefined.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ всС Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎ var, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ здСсь: Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ var, let ΠΈ const?

var, let ΠΈΠ»ΠΈ const

Для Π½Π°Ρ‡Π°Π»Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сравним var ΠΈ let. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ var ΠΈ let это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ let ΠΏΠΎΠΌΠΈΠΌΠΎ глобальной области видимости ΠΈ области видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² области видимости Π±Π»ΠΎΠΊΠ°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная созданная ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова let доступна Π²Π½ΡƒΡ‚Ρ€ΠΈ β€œΠ±Π»ΠΎΠΊΠ°β€, Π³Π΄Π΅ ΠΎΠ½Π° Π±Ρ‹Π»Π° создана, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Когда я сказал β€œΠ±Π»ΠΎΠΊβ€, я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками <>, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΠ» for ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if.

И Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ discountPrices Π² послСдний Ρ€Π°Π·.

ВспомнитС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΏΡ€Π°Π²Π΅ вывСсти i, discountPrice, ΠΈ finalPrice Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π° for, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ var, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ var Π½Π° let ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ наш ΠΊΠΎΠ΄?

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ReferenceError: i is not defined. Π§Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная, объявлСнная ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ let, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости Π±Π»ΠΎΠΊΠ°, Π° Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ i (ΠΈΠ»ΠΈ discountedPrice ΠΈΠ»ΠΈ finalPrice) Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ β€œΠ±Π»ΠΎΠΊΠ°β€, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹, ΠΈ это выдаст Π½Π°ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ обращСния, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ связано с β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ΠΌβ€. Π Π°Π½Π΅Π΅ ΠΌΡ‹ сказали, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ β€œΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΡβ€ это: β€œΠ˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ JavaScript Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined Π²ΠΎ врСмя Ρ„Π°Π·Ρ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ β€œΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅β€». ΠœΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ это Π² дСйствии ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ Π΅Ρ‘ объявлСния (Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ undefined).

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ случая использования, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ Π΅Ρ‘ объявлСния. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ReferenceError Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ undefined.

По Ρ„Π°ΠΊΡ‚Ρƒ, это ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ let. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ Π΅Ρ‘ объявлСниС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ let, вмСсто получСния undefined (ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈ объявлСнии ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ var), Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ReferenceError.

let ΠΈΠ»ΠΈ const

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ var ΠΈ let, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎ const? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, const ΠΏΠΎΡ‡Ρ‚ΠΈ такая ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ let. Однако Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅: Ссли Π²Ρ‹ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ присвоили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ const, Π²Ρ‹ Π½Π΅ смоТСтС Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ let ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пСрСзаписаны, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ const Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша пСрСмСнная Π±Ρ‹Π»Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ const. Или Π½Π΅ совсСм. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ пСрСмСнная Π±Ρ‹Π»Π° объявлСна ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ const Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π°, всС Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, это Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСзаписана. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ измСнСния свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ являСтся Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒΡŽ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ объявлСн ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ const, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π΅Π³ΠΎ свойств. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΉ вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Ρ‘ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°: Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var, let ΠΈΠ»ΠΈ const? Π‘Π°ΠΌΠΎΠ΅ популярноС ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΈ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡΡŒ я, это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСгда const, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ пСрСмСнная ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ const Π²Ρ‹ Π΄Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ сСбС ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ эта пСрСмСнная Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Если Π΅Ρ‘ потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ρ†ΠΈΠΊΠ»Π΅ for), просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ let.

ΠœΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ случаСв ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ большС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нСпопулярноС ΠΌΠ½Π΅Π½ΠΈΠ΅, хотя ΠΎΠ½ΠΎ всС Π΅Ρ‰Ρ‘ ΠΈΠΌΠ΅Π΅Ρ‚ обоснованиС, это Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ const, нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта пСрСмСнная Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π°, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅, это Π½Π΅ совсСм Ρ‚Π°ΠΊ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ этого мнСния всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ let ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° самом Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ константами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ _LOCATION_ =….

Боставим Ρ€Π΅Π·ΡŽΠΌΠ΅ Π²Ρ‹ΡˆΠ΅ сказанного, var ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ Π΅Ρ‘ объявлСния Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ undefined. const ΠΈ let ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости Π±Π»ΠΎΠΊΠ° ΠΈ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π΄ΠΎ ΠΈΡ… объявлСния Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ReferenceError. И ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ const ΠΈ let это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ присвоСно const Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСзаписано, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ let.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ данная ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π½Π° tylermcginnis.com ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ курса Modern JavaScript

Бпасибо Π·Π° ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, надСюсь Π²Ρ‹ познакомились для сСбя с Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ var, let ΠΈ const Π² JavaScript

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ разбираСмся, Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ var, let ΠΈ const ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ var, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ const ΠΈΠ»ΠΈ let. Они Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΠΎ создании ячСйки Π² памяти), Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

Π’Π°ΠΆΠ½ΠΎ! let ΠΈ const ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ECMAScript 6, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поддСрТиваСтся Π½Π΅ всСми Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ. Π—Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ совмСстимости.

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

ΠŸΠΈΡˆΠ΅Ρ‚ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π² свободноС врСмя создаСт ΠΈΠ³Ρ€Ρ‹. ΠœΠ΅Ρ‡Ρ‚Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ свою ΡΡ‚ΡƒΠ΄ΠΈΡŽ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π»Π°ΠΌΠΏΠΎΠ²Ρ‹Π΅ RPG.

ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости var ΠΈ let

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ var ΠΈ let Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с областями видимости. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ var, созданная Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, дСйствуСт ΠΊΠ°ΠΊ глобальная пСрСмСнная β€” ΠΎΠ½Π° доступна ΠΈΠ· любой части скрипта.

Если ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΊΠ°ΠΊ локальная пСрСмСнная):

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ:

Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ сама Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ.

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся let, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° <>, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ созданы:

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ отличаСтся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ счётчика Ρ†ΠΈΠΊΠ»Π°, Ссли Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var ΠΈ let:

varlet
for(var i = 0; i const ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ константы. НапримСр, физичСскиС ΠΈ матСматичСскиС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡ… стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Ρ‚Π΅Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

НапримСр, Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· DOM:

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСизмСняСмым сохраняСтся сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ Π΅Π³ΠΎ поля:

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся областСй видимости, Ρ‚ΠΎ const Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ let.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ваши Π΄Π°Π½Π½Ρ‹Π΅ Π² сохранности β€” ΠΈΡ… нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ·Π²Π½Π΅ ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅. Π’ этих случаях let ΠΈ const Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π΅Π±-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ всС возмоТности этого языка, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° наш курс ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° JavaScript.

ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΡ Fullstack-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° JavaScript

Π’Ρ‹ с нуля Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ сайты ΠΈ Π²Π΅Π±-прилоТСния Π½Π° JS ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² β€” Vue, React ΠΈΠ»ΠΈ Angular. Π‘Ρ‚Π°Π½Π΅Ρ‚Π΅ Ρ†Π΅Π½Π½Ρ‹ΠΌ сотрудником для любой IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΏΠΎΠΉΠΌΡ‘Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅, ΠΈ смоТСтС Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Var, let ΠΈ const Π² JavaScript

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

Aug 13, 2019 Β· 4 min read

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var. Π€ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var

Пока я разбирался Ρ‡Ρ‚ΠΎ ΠΊ Ρ‡Π΅ΠΌΡƒ Π² основах JavaScript, я наткнулся Π½Π° Ρ‚Ρ€ΠΈ способа объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ var, let ΠΈ const. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ различия этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² присваивания.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ-настоящСму ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ var, let ΠΈ const, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… понятиях:

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” это процСсс ввСдСния Π½ΠΎΠ²ΠΎΠ³ΠΎ опрСдСлСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ, Ссли Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. Π’ JavaScript ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ объявляСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var (это автоматичСски выполняСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ).

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌ Π΅ Π½Π½ΠΎΠΉ β€” это процСсс присваивания значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ опрСдСляСм связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом var, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт контСкст, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ доступны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости опрСдСляСт Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅Ρ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ области видимости, Ρ‚ΠΎ ΠΎΠ½Π° нСдоступна для использования. ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² иСрархичСском порядкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΈ доступ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ, Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

БущСствуСт 2 Ρ‚ΠΈΠΏΠ° области видимости:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, входят Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, нСзависимо ΠΎΡ‚ Π±Π»ΠΎΠΊΠΎΠ².

Блочная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°, входят Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этого Π±Π»ΠΎΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π½Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΎΠ², Π½ΠΎ Π½Π΅ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠ°, Π΄Π°ΠΆΠ΅ Ссли это всС ΠΎΠ΄Π½Π° функция. Π’ Π±Π»ΠΎΠΊΠΈ входят if. else ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹.

ΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅

Π’ Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MDN говорится:

Β«ΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ β€” это Ρ‚Π΅Ρ€ΠΌΠΈΠ½, использованиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ JavaScript Π΄ΠΎ спСцификации языка ES2015. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ поднятиС β€” это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ способ видСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ контСкст исполнСния (особСнно созданиС ΠΈ исполнСниС стадий) Π² JavaScript. Однако это понятиС ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строгоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ поднятия ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ физичСски располагаСтся Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π° стадии компиляции, Π½ΠΎ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²Ρ‹ ΠΈΡ… Π½Π°Π±Ρ€Π°Π»ΠΈ Π² своСм ΠΊΠΎΠ΄Π΅Β».

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° JS для ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ var ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ присваивая Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π›ΡŽΠ±Π°Ρ пСрСмСнная, объявлСнная ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ var, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ поднятыС, Π° ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” undefined.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ let ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Π›ΡŽΠ±Π°Ρ пСрСмСнная, объявлСнная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ let, ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π»ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. ЗначСния подняты ΠΈ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

Бвязи let ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ свСрху области видимости ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, содСрТащСго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ поднятиСм. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со значСния undefined, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ let Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΠΊΠ° ΠΈΠΌ Π½Π΅ присвоится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Reference Error (ошибка использования Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ названия).

const

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ const ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ let, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ появляСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ свойство. Он Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ связСй const Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, const Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ всСгда ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ объявлСнии, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° const связан с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈ const Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Однако измСнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° допустимы.

Один послСдний Ρ„Π°ΠΊΡ‚:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова, станут Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. ВзглянСм Π½Π° это Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ происходит, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄ ΠΊ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ поднятия. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² нашСм ΠΊΠΎΠ΄Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΡ‰Π΅Ρ‚ «поднятыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅Β» ΠΈ Π·Π°Ρ‚Π΅ΠΌ присваиваСт ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Однако, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½ ΠΈΡ‰Π΅Ρ‚ Π΅Π΅ срСди ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ глобальной области видимости.

Π’ нашСм случаС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ β€˜isGloballyAvailable’ Π΄Π°ΠΆΠ΅ Π² глобальной области видимости, поэтому ΠΎΠ½ автоматичСски Ρ‚ΡƒΠ΄Π° Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚.

Π­Ρ‚ΠΎ нСвСроятно опасный процСсс, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов var, let ΠΈ const нСльзя.

Π’Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var, let ΠΈΠ»ΠΈ const?

ES2015(ES6) прСдставил let ΠΈ const. Π—Π°Ρ‡Π΅ΠΌ JavaScript Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈΡ… Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ? ΠœΠΎΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ с var, ΠΈΠ»ΠΈ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°?

Одна главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с var связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ позволяСт ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄Π΅, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ошибки. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктам Π² ΠΊΠΎΠ΄Π΅.

РаспространСнноС ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сходится с ΠΌΠΎΠΈΠΌ:

ВсСгда ΠΎΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ const, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, присвоСнноС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π΅ измСнится. Π­Ρ‚ΠΎ подскаТСт Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

А let ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ измСнится.

Π“Π΄Π΅ Π±Ρ‹ Π±Ρ‹Π» ΠΏΠΎΠ»Π΅Π·Π΅Π½ var, я Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *