Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ дСйствиС Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НапримСр, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ красиво вывСсти сообщСниС ΠΏΡ€ΠΈ привСтствии посСтитСля, ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ посСтитСля с сайта, Π΅Ρ‰Ρ‘ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными Β«ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π’Ρ‹Π·ΠΎΠ² showMessage() выполняСт ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ сообщСниС Π΄Π²Π°ΠΆΠ΄Ρ‹.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ явно дСмонстрируСт ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ дублирования ΠΊΠΎΠ΄Π°.

Если понадобится ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСниС ΠΈΠ»ΠΈ способ Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° – достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС: Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π£ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ доступ ΠΊ внСшним ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Ѐункция ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΌ доступом ΠΊ внСшним ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’Π½Π΅ΡˆΠ½ΡΡ пСрСмСнная ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ локальной.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ снаруТи всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ внСшняя пСрСмСнная userName Π² Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ – Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²ΠΈΠ΄ΠΈΠΌΡ‹ для любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅).

Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ использованиС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ. Π’ соврСмСнном ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ°Π»ΠΎ ΠΈΠ»ΠΈ совсСм Π½Π΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π₯отя ΠΎΠ½ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для хранСния Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… Β«ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²Ρ‹Ρ…Β» Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

НапримСр, Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ функция showMessage(from, text) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ:

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ text Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ послС = :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ text Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ «Ρ‚Скст Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½»

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС «Ρ‚Скст Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½» это строка, Π½ΠΎ Π½Π° Π΅Ρ‘ мСстС ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ»ΠΎΡΡŒ ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈ отсутствии ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. НапримСр:

Π’ JavaScript ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° функция вызываСтся Π±Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π Π°Π½Π½ΠΈΠ΅ вСрсии JavaScript Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π² старых скриптах.

НапримСр, явная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° undefined :

β€¦Π˜Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° || :

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ значСния

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠΉ Π΅Ρ‘ ΠΊΠΎΠ΄.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ функция слоТСния Π΄Π²ΡƒΡ… чисСл:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° return ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² любом мСстС Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ этого мСста, функция останавливаСтся, ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ возвращаСтся Π² Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠΉ Π΅Ρ‘ ΠΊΠΎΠ΄ (присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ result Π²Ρ‹ΡˆΠ΅).

Π’Ρ‹Π·ΠΎΠ²ΠΎΠ² return ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ return ΠΈ Π±Π΅Π· значСния. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Если функция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния, это всё Ρ€Π°Π²Π½ΠΎ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π° undefined :

ΠŸΡƒΡΡ‚ΠΎΠΉ return Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ return undefined :

Для Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ выраТСния Π² return ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ°Π½Ρ‡ΠΈΠ²ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

И Ρ‚ΠΎΠ³Π΄Π° всё сработаСт, ΠΊΠ°ΠΊ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ.

Π’Ρ‹Π±ΠΎΡ€ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция – это дСйствиС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π³Π»Π°Π³ΠΎΠ»ΠΎΠΌ. Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ простым, Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ дСйствиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программист, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π²Π΅Ρ€Π½ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ функция.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³Π»Π°Π³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ прСфиксы, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ дСйствия, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ соглашСния, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этих прСфиксов.

НапримСр, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с «show» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с…

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠΌΡ‘Π½:

Благодаря прСфиксам, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ взглядС Π½Π° имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ становится понятным Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΊΠΎΠ΄, ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ.

Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ явно подразумСваСтся Π΅Ρ‘ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ. И это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ дСйствиСм.

Π”Π²Π° нСзависимых дСйствия ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΄Π°ΠΆΠ΅ Ссли прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ вмСстС (Π² этом случаС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ).

НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‚ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

Π’ этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… использовались общСпринятыС смыслы прСфиксов. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… значСниях, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠ°Π»ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ общСпринятых. Π’ любом случаС Π²Ρ‹ ΠΈ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ прСфикс, Ρ‡Ρ‚ΠΎ функция с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π° Ρ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚.

ИмСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто, ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅Π»Π°ΡŽΡ‚ свСрхкороткими.

Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’ основном ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΌΠ΅Ρ€Ρƒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌΠΈ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ == ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ. Если это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ большоС, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° нСсколько ΠΌΠ΅Π½ΡŒΡˆΠΈΡ…. Иногда ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этому ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ нСпросто, Π½ΠΎ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ.

НСбольшиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ тСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ – само сущСствованиС Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ выполняСт Ρ€ΠΎΠ»ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²!

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΡƒ nextPrime :

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ isPrime(n) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° простоС:

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»Π΅Π³Ρ‡Π΅ для понимания, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? ВмСсто куска ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ дСйствия ( isPrime ). Иногда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ самодокумСнтируСмым.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, допустимо ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ понятным.

Π˜Ρ‚ΠΎΠ³ΠΎ

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

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

Ѐункция, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½ΠΈΠΌΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π³ΠΎΡ€Π°Π·Π΄ΠΎ понятнСС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π΅ΠΉ внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ скриптов. ΠœΡ‹ рассмотрСли лишь основы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² JavaScript, Π½ΠΎ ΡƒΠΆΠ΅ сСйчас ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡƒΡ‚ΠΈ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ функциям ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ… всё Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ.

Π—Π°Π΄Π°Ρ‡ΠΈ

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»Π΅Π½ Π»ΠΈ «else»?

Π’ ΠΈΠ½ΠΎΠΌ случаС ΠΎΠ½Π° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· confirm ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ этого Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°?

Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Π½Π΅Ρ‚.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ‘?’ ΠΈΠ»ΠΈ ‘||’

Π’ ΠΈΠ½ΠΎΠΌ случаС ΠΎΠ½Π° Π·Π°Π΄Π°Ρ‘Ρ‚ вопрос confirm ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ checkAge :

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

Π£Ρ€ΠΎΠΊ β„–13. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Обновл. 11 БСн 2021 |

На ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ функция ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² caller, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return. На этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° с Π½ΠΈΠΌΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ умноТСния Π΄Π²ΡƒΡ… чисСл, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ это Π±ΡƒΠ΄ΡƒΡ‚ числа. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡƒΠ·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ? Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это пСрСмСнная, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдоставляСт caller (Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚). ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ объявлСнии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках. Если ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

АргумСнт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся ΠΈΠ· caller-Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ указываСтся Π² скобках ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² caller-Π΅:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с количСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈΠ½Π°Ρ‡Π΅ компилятор выдаст сообщСниС ΠΎΠ± ошибкС.

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ?

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, всС Π΅Ρ‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² копируСтся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ). Π­Ρ‚ΠΎΡ‚ процСсс называСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. НапримСр:

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² caller.

НапримСр, простая функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… сумму:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Рассмотрим Π΅Ρ‰Π΅ нСсколько Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ двумя Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ всё понятно.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ лёгкая для понимания:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Π²Ρ‹Π·ΠΎΠ² послоТнСС:

add(1, multiply(2, 3)) => add(1, 6) => 7

ПослСдний Π²Ρ‹Π·ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТным ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ add() являСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² add():

add(1, add(2, 3)) => add(1, 5) => 6

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–1: Π§Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–2: КакиС здСсь Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹?

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–3: Какой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–4: ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ doubleNumber(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΡƒΠ΄Π²Π°ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² caller.

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–5: ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std::cin), ΡƒΠ΄Π²Π°ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ doubleNumber() ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ задания, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° экран.

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Π½Π΅Π³ΠΎ ΠΌΡ‹ΡˆΠΊΠΎΠΉ.

ΠžΡ‚Π²Π΅Ρ‚ β„–1

Ѐункция multiply() ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° void, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ эта функция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния. Но, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° всС Ρ€Π°Π²Π½ΠΎ пытаСтся Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΎΡ‚ компилятора. Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° int.

ΠžΡ‚Π²Π΅Ρ‚ β„–2

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β„–1: main() ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² multiply(), Π½ΠΎ multiply() ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β„–2: multiply() вычисляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ присваиваСт Π΅Π³ΠΎ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² main(). А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ multiply() β€” int, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторах) ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ (Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… компиляторах).

ΠžΡ‚Π²Π΅Ρ‚ β„–3

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

Руководство ΠΏΠΎ JavaScript, Ρ‡Π°ΡΡ‚ΡŒ 4: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

БСгодня ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° руководства ΠΏΠΎ JavaScript, которая посвящСна функциям.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript

ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ функциях Π² JavaScript, сдСлаСм ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΈ рассмотрим подробности ΠΎ Π½ΠΈΡ…, Π·Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ эффСктивно ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Ѐункция β€” это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· объявив, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π½ΡƒΠΆΠ½ΠΎ. Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚, хотя это ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «функциями ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса» Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ функциям Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с функциями ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ синтаксичСскиС конструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствовали Π² языкС Π΄ΠΎ появлСния стандарта ES6 ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π΄ΠΎ сих ΠΏΠΎΡ€.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (function declaration).

Π’ наши Π΄Π½ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈΒ», отличая ΠΈΡ… ΠΎΡ‚ «стрСлочных» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появились Π² ES6.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ константС. Вакая конструкция называСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (function expression).

МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° константС, Π½ΠΎ сама ΠΎΠ½Π° ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ функциям ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π°. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ (named function expression).

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

Π’ стандартС ES6 появились стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (arrow function), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… «встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉΒ» (inline function) β€” Π² Ρ€ΠΎΠ»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ функциям (коллбэков).

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

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π½Π° этапС объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΅ΠΉ значСния (эти значСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Начиная со стандарта ES6 Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ» (default parameters).

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

Π’ ES8 появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°ΠΏΡΡ‚ΡƒΡŽ послС послСднСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (это называСтся trailing comma). Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ удобство рСдактирования ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ использовании систСм контроля вСрсий Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь ΠΈ здСсь.

ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ функциям Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ массивов. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ эти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΊΠ°ΠΊ Ρ‚Ρ€ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ (это β€” Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ» ΠΈΠ»ΠΈ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ spreadΒ»). Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит.

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

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΡ‘ΠΌ позволяСт, описывая ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π²ΠΈΠ΄Π΅ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ пСрСдавая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ доступ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½Π°ΠΌ Π±Π΅Π· использования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… конструкций. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΏΡ€ΠΈΡ‘ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

ЗначСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Если послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова return ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ возвращаСтся Π² мСсто Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ const [ name, age ] = doSomething() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Β«ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ константы name ΠΈ age ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠΌ значСния элСмСнтов массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ функция».
Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ‚ΠΎ ΠΆΠ΅ самоС выглядит с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° внСшнСй ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π΅Ρ‘ нСльзя Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ·Π²Π½Π΅.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Когда Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this

Как Π²ΠΈΠ΄Π½ΠΎ, Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° start() ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, Π° Π²ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ stop() явно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова this Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈ стрСлочных функциях

Всё это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ подходят Π½Π° Ρ€ΠΎΠ»ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ конструкторов (Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Ρ€Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Ρ€ΠΎΠ»ΠΈ конструктора β€” Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½Π° ошибка TypeError ).

НСмСдлСнно Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния

НСмСдлСнно Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Immediately Invoked Function Expression, IIFE) β€” это функция, которая автоматичСски вызываСтся сразу послС Π΅Ρ‘ объявлСния.

Π’ΠΎΡ‡ΠΊΠ° с запятой ΠΏΠ΅Ρ€Π΅Π΄ IIFE Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°, Π½ΠΎ Π΅Ρ‘ использованиС позволяСт Π·Π°ΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ошибок, связанных с автоматичСской расстановкой Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой.

ΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΡˆΡ‘Π» послС Π΅Ρ‘ объявлСния, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнится.

Если ΠΆΠ΅ Π² ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ ситуации Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΊΠΎΠ΄ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π‘Ρ‚Ρ€Π΅Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

БСйчас ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ стрСлочных функциях, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π² стандарта ES6, ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшним Π²ΠΈΠ΄ΠΎΠΌ, Π½ΠΎ ΠΈ особСнностями повСдСния. Π’ наши Π΄Π½ΠΈ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ соврСмСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ использовались Π±Ρ‹ Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… появлСниС навсСгда ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ ΠΈ внСшний Π²ΠΈΠ΄ JS-ΠΊΠΎΠ΄Π° ΠΈ особСнности Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘ чисто внСшнСй Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксис объявлСния стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ оказываСтся ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅ синтаксиса ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ΠΎΡ‚ объявлСниС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ΠΎΡ‚ объявлСниС стрСлочной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π² Ρ†Π΅Π»ΠΎΠΌ, Ссли Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ особСнности стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΈ Π² случаС с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ функциями, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π² скобках. ΠŸΡ€ΠΈ этом, Ссли такая функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ всСго ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Π΅Π· скобок. НапримСр, Π²ΠΎΡ‚ функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ числа Π½Π° 2.

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

▍НСявный Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠœΡ‹ ΡƒΠΆΠ΅ касались этой особСнности стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎ ΠΎΠ½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Π°, Ρ‡Ρ‚ΠΎ Π΅Ρ‘ слСдуСт ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ однострочныС стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ нСявный Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ значСния ΠΈΠ· однострочной стрСлочной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ. Как Π±Ρ‹Ρ‚ΡŒ, Ссли такая функция Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚? Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ систСму, поэтому Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.

β–ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this ΠΈ стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΏΡ€ΠΈ использовании ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова this Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, прСдставлСнного ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, this ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС говорят ΠΎ привязкС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова this ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌΡƒ собой контСкст выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ частности, Ссли функция Π²Ρ‹Π·Π²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this привязано ΠΊ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Π’ случаС ΠΆΠ΅ со стрСлочными функциями оказываСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… привязка this Π½Π΅ выполняСтся, ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом this ΠΈΠ· содСрТащих ΠΈΡ… областСй видимости. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΡ… Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Замыкания

Замыкания β€” это ваТная концСпция Π² JavaScript. ЀактичСски, Ссли Π²Ρ‹ писали JS-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π²Ρ‹ пользовались ΠΈ замыканиями. Замыкания ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°Ρ… проСктирования β€” Π² Ρ‚ΠΎΠΌ случаС, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ строгий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа ΠΊ Π½Π΅ΠΊΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ функциям.

Когда функция вызываСтся, Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ доступ ΠΊΠΎ всСму Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ находится Π²ΠΎ внСшнСй ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π½Π΅ΠΉ области видимости. Но ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ объявлСно Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ·Π²Π½Π΅ доступа Π½Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»Π° объявлСна нСкая пСрСмСнная (ΠΈΠ»ΠΈ другая функция), ΠΎΠ½ΠΈ нСдоступны Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Π½ΠΈ Π²ΠΎ врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΈ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Однако Ссли ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ эта новая функция Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊΠΎ всСму Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ объявлСно Π² исходной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом всё это Π±ΡƒΠ΄Π΅Ρ‚ скрыто ΠΎΡ‚ внСшнСго ΠΊΠΎΠ΄Π° Π² Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ΠΎΡ‚ функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя собаки, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ Π² консоль.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ нас ΠΏΠΎΠΊΠ° Π½Π΅ интСрСсуСт, тСкст выводится Π² консоль с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IIFE, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС особой Ρ€ΠΎΠ»ΠΈ Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Π΅Ρ‘ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ, вмСсто Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ тСкст Π² консоль, ΠΌΡ‹ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· пСрСписанной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bark() Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠΌ.

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

ΠŸΡ€ΠΎΠ²Π΅Π΄Ρ‘ΠΌ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ экспСримСнт β€” создадим, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ исходной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Ρ…, для Ρ€Π°Π·Π½Ρ‹Ρ… собак.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

Π˜Ρ‚ΠΎΠ³ΠΈ

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Как Π²Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅ΡΡŒ ΠΊ стрСлочным функциям Π² JavaScript?

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

JavaScript ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

JavaScript function Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²).

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π Π°Π½Π΅Π΅ Π² этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

Π’ опрСдСлСниях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ количСство ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Иногда это ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ECMAScript 2015 допускаСт значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² объявлСнии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript ΠΈΠΌΠ΅ΡŽΡ‚ встроСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° содСрТит массив Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ (Π²Ρ‹Π·ΠΎΠ²Π΅) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для поиска (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅Π³ΠΎ значСния Π² спискС чисСл:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

x = findMax(1, 123, 500, 115, 44, 88);

Или создайтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для суммирования всСх Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() <
var i;
var sum = 0;
for (i = 0; i

АргумСнты ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

АргумСнты JavaScript ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ: функция ΡƒΠ·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния, Π½ΠΎ Π½Π΅ располоТСниС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Если функция измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΎΠ½Π° Π½Π΅ мСняСт исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

ИзмСнСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ (Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ) Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС

Π’ JavaScript ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями.

Из-Π·Π° этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ вСсти сСбя Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ ΠΏΠΎ ссылкС:

Если функция измСняСт свойство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ½Π° измСняСт исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ИзмСнСния свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΈΠ΄Π½Ρ‹ (ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ) Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ способ создания

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π‘Ρ‚Π°Ρ‚ΡŒΡ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ рассмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ функция ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ классичСский способ Π΅Ρ‘ объявлСния, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ функция?

Ѐункция – это ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² Π½ΡƒΠΆΠ½Ρ‹Ρ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто случаСтся, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ строчки ΠΊΠΎΠ΄Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ этого ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ просто Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· классичСских сцСнариСв использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° JavaScript.

ΠšΡ€ΠΎΠΌΠ΅ этого, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

НапримСр, Ссли ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ стоит какая-Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π°, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ Π΅Ρ‘ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. А Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ… Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ просто. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ этому Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ просто Π²Π½ΠΎΡΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ измСнСния ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности.

JavaScript позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами:

ОбъявлСниС ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² JavaScript ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 2 этапа:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΡ€ΠΈ составлСнии ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρ‹, Ρ†ΠΈΡ„Ρ€Ρ‹ (0 – 9), Π·Π½Π°ΠΊΠΈ Β«$Β» ΠΈ Β«_Β». Π’ качСствС Π±ΡƒΠΊΠ² рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ английский Π°Π»Ρ„Π°Π²ΠΈΡ‚ (a-z, A-Z). Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Ρ†ΠΈΡ„Ρ€Ρ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для получСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π˜Ρ… ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ осущСствляСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запятой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, Ρ‚ΠΎ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки Π² любом случаС ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

Π’Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это ΠΊΠΎΠ΄, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π΅Ρ‘ Π²Ρ‹Π·ΠΎΠ²Π΅.

2. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ОбъявлСнная функция сама ΠΏΠΎ сСбС Π½Π΅ выполняСтся. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π΅Ρ‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ осущСствляСтся посрСдством указания Π΅Ρ‘ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π²ΡƒΡ… ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок. Π’Π½ΡƒΡ‚Ρ€ΡŒ скобок ΠΏΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ значСния (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹) раздСляя ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запятой.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ – это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках Π½Π° этапС объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½ΠΈΠΌ снаруТи нСльзя.

АргумСнты – это значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Ρ‘ Π²Ρ‹Π·ΠΎΠ²Π°.

Но Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся ссылкой, Ρ‚ΠΎ Π΅Π³ΠΎ измСнСния Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Они Π½Π΅ доступны Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈ этом Ссли пСрСмСнная располоТСна Π²Π½Π΅ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ½Π° называСтся глобальной.

arguments

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ – это Π½Π΅ СдинствСнный способ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² JavaScript ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Доступ ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· arguments выполняСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊ элСмСнтам ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ массива, Ρ‚.Π΅. ΠΏΠΎ порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· arguments Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство.

НапримСр, создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ сумму всСх Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ числами:

Π§Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» for. of этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΡ€ΠΈ нСобходимости arguments ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ массив.

Π’ JavaScript arguments ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для написания ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² зависимости ΠΎΡ‚ количСства Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ, ΠΈΡ… Ρ‚ΠΈΠΏΠ°, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия.

ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, созданныС Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΅Ρ‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Они доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… функциях, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π½Π΅Ρ‘, Ссли Ρ‚Π°ΠΌ Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π’Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Ρ‘ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ доступны.

ΠŸΡ€ΠΈ этом внСшняя пСрСмСнная ΠΈΠ»ΠΈ функция Π±ΡƒΠ΄Π΅Ρ‚ доступна Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Колбэки

Π£Π·Π½Π°Ρ‚ΡŒ являСтся Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ typeof :

НапримСр, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ являСтся Π»ΠΈ колбэк Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ:

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (return)

Π‘Π΅Π· использования return :

Б использованиСм return :

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ, располоТСнныС послС return Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ:

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π’ качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

ΠŸΡ€ΠΈ создании Ρ‚Π°ΠΊΠΈΡ… конструкций Π½Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΡ€ΠΎΠ²Π½ΡŽ влоТСнности, Π½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния разумности этим Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΡƒΡŽ Π² ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ:

ΠšΡ€ΠΎΠΌΠ΅ этого Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ внСшнюю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

РСкурсия

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ самой сСбя. Π­Ρ‚ΠΎ дСйствиС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ называСтся рСкурсиСй.

ΠšΡ€ΠΎΠΌΠ΅ этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ условия для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· рСкурсии. Если это Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ сама сСбя Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€ΠΎΡˆΠ΅Π½Π° ошибка, связанная с ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ стСка.

НапримСр, использованиС рСкурсии для вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° числа:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ числа ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎ 10:

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² JavaScript

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ – это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ΠžΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΏΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π’ JavaScript Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π‘ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Но ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² JavaScript. Для этого Ρƒ нас Π΅ΡΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Β«ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для вычислСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ количСства ΠΊΠΊΠ°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π² дСнь:

НовыС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появились Π² ES6+ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π’ языкС, начиная с вСрсии ECMAScript 6+ (2015+) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

НапримСр, установим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ color Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ‘#009688’ :

Π”ΠΎ появлСниС Ρ‚Π°ΠΊΠΎΠΉ возмоТности Π² языкС, Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Ρ‚Π°ΠΊ:

ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (rest parameters)

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ встроСнныС (стандартныС) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ JavaScript имССтся ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ встроСнных (стандартных) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π”Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΆΠ΅ описаны Π² самом Π΄Π²ΠΈΠΆΠΊΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всС ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НапримСр, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΌΠ΅Ρ‚ΠΎΠ΄) alert, Π΅Ρ‘ Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ. Она ΡƒΠΆΠ΅ описана Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° alert осущСствляСтся посрСдством указания ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ…. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния Π½Π° экран Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ВСкстовоС сообщСниС бСрётся ΠΈΠ· значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, Ссли для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

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

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