Javascript функция: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ — JavaScript | MDN

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

function — JavaScript | MDN

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· конструктор Function ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

function name([param,[, param,[..., param]]]) {
   [statements]
}
name
Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
paramN
Имя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. МаксимальноС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ функция, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Π΄Π²ΠΈΠΆΠΊΠΎΠ².
statements
Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Ѐункция, созданная Ρ‡Π΅Ρ€Π΅Π· объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ FunctionΒ ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми свойствами, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅Β Function для ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ функциях.

Π’Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния (см. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

).

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ undefined. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, функция Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ return, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, создаваСмыС ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ

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

ПодниманиС объявлСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π΅Ρ‘ объявили:

hoisted(); 

function hoisted() {
  console.log("foo");
}

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния Π½Π΅ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ:

notHoisted(); 

var notHoisted = function() {
   console.log("bar");
};

ИспользованиС

function

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ количСство ΠΏΡ€ΠΎΠ΄Π°ΠΆ, слоТСнноС ΠΈΠ· количСства ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Β a, bΒ ΠΈΒ c.

function calc_sales(units_a, units_b, units_c) {
   return units_a*79 + units_b * 129 + units_c * 699;
}

BCD tables only load in the browser

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами (Array) Π½Π° JavaScript

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π½Π° JavaScript

Массив (Array) это мноТСство ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ элСмСнтов, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами это упорядочный список ΠΈΠ· элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ имССю свой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ любая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° FrontEnd вСрсии сайта Π½Π΅ обходится Π±Π΅Π· массивов, поэтому Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист!


ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π² JavaScript

БозданиС массива Array


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Array


ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½Ρ‹ массива


ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ созданиС массива Array


Доступ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ массива ΠΏΠΎ индСксу (порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ)


ΠžΠ±Ρ…ΠΎΠ΄ массива Π² JavaScript


Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта массива Π² ΠΊΠΎΠ½Π΅Ρ†


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ послСднСго элСмСнта массива


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива


Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² Π½Π°Ρ‡Π°Π»ΠΎ массива


Поиск Π½ΠΎΠΌΠ΅Ρ€Π° элСмСнта Π² массивС


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ индСксом


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов, начиная с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ индСкса


БозданиС копии массива


ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚


ЭкзСмпляры массива Π² JavaScript

ВсС экзСмпляры массива Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ Array.prototype ΠΈ Π»ΡŽΠ±Ρ‹Π΅ измСнСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° конструктора массива Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ всС экзСмпляры Array.

Бвойства

Array.prototype.constructor ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Array.prototype.length ΠžΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ количСство элСмСнтов Π² массивС.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ измСнСния

Array.prototype.copyWithin() ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов массива Π²Π½ΡƒΡ‚Ρ€ΠΈ массива.

Array.prototype.fill() ЗаполняСт всС элСмСнты массива ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ индСкса ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Array.prototype.pop() УдаляСт послСдний элСмСнт ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ.

Array.prototype.push() ДобавляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов Π² ΠΊΠΎΠ½Π΅Ρ† массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ массива.

Array.prototype.reverse() ΠŸΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ порядок элСмСнтов Π² массивС β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт становится послСдним, Π° послСдний β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

Array.prototype.shift() УдаляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ.

Array.prototype.sort() Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты массива Π½Π° мСстС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ отсортированный массив.

Array.prototype.splice() ДобавляСт ΠΈ/ΠΈΠ»ΠΈ удаляСт элСмСнты ΠΈΠ· массива.

Array.prototype.unshift() ДобавляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов Π² Π½Π°Ρ‡Π°Π»ΠΎ массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ массива.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ массиву

Array.prototype.concat() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив, состоящий ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива, соСдинённого с Π΄Ρ€ΡƒΠ³ΠΈΠΌ массивом ΠΈ/ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (списком массивов/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ).

Array.prototype.includes() ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, содСрТится Π»ΠΈ Π² массивС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ элСмСнт, возвращая, соотвСтствСнно, true ΠΈΠ»ΠΈ false.

Array.prototype.join() ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС элСмСнты массива Π² строку.

Array.prototype.slice() Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива.

Array.prototype.toSource() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива; Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ массива. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Object.prototype.toSource().

Array.prototype.toString() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строковоС прСдставлСниС массива ΠΈ Π΅Π³ΠΎ элСмСнтов. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Object.prototype.toString().

Array.prototype.toLocaleString() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ строковоС прСдставлСниС массива ΠΈ Π΅Π³ΠΎ элСмСнтов. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Object.prototype.toLocaleString().

Array.prototype.indexOf() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ (наимСньший) индСкс элСмСнта Π²Π½ΡƒΡ‚Ρ€ΠΈ массива, Ρ€Π°Π²Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ; ΠΈΠ»ΠΈ -1, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Array.prototype.lastIndexOf() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСдний (наибольший) индСкс элСмСнта Π²Π½ΡƒΡ‚Ρ€ΠΈ массива, Ρ€Π°Π²Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ; ΠΈΠ»ΠΈ -1, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π° массива

Array.prototype.forEach() Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² массивС.

Array.prototype.entries() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива Array Iterator, содСрТащий ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡ / Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Array.prototype.every() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Array.prototype.some() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Array.prototype.filter() Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив со всСми элСмСнтами этого массива, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… функция Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true.

Array.prototype.find() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС, Ссли элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ undefined, Ссли Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Array.prototype.findIndex() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ искомый индСкс Π² массивС, Ссли элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ -1, Ссли Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Array.prototype.keys() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ массива, содСрТащий ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Array.prototype.map() Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива.

Array.prototype.reduce() ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ аккумулятору ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ массива (слСва-Π½Π°ΠΏΡ€Π°Π²ΠΎ), сводя Π΅Π³ΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Array.prototype.reduceRight() ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ аккумулятору ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ массива (справа-Π½Π°Π»Π΅Π²ΠΎ), сводя Π΅Π³ΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Array.prototype.values() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива Array Iterator, содСрТащий значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Array.prototype[@@iterator]() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива Array Iterator, содСрТащий значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Помогла Π»ΠΈ Π²Π°ΠΌ ΡΡ‚Π°Ρ‚ΡŒΡ?

348 Ρ€Π°Π· ΡƒΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π»Π°

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ: (0) ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

javascript — Ѐункция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ число Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСский javascript

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈ Ρƒ мСня Π΅ΡΡ‚ΡŒ это ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ число Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я написал, Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

«Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Π² своСм Ρ‚Π΅Π»Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β»

var even = function(x) {
  if ((x % 2) === 0) {
    return true;
  } else
    return false;
};

0

patman20 27 ΠžΠΊΡ‚ 2020 Π² 11:01

3 ΠΎΡ‚Π²Π΅Ρ‚Π°

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΊΠΎΠ΄Π°, содСрТит Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚:

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (x%2)===0 ΡƒΠΆΠ΅ являСтся логичСским, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

return x%2 === 0;

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π²Π°ΠΌ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ этого шаблона:

if (some_boolean_expression) {
    return true;
} else {
    return false;
}

… ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π²Π°ΠΌΠΈ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² точности совпадаСт с логичСским Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ оцСниваСтся Π² условии if. Π’Π°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ просто:

return some_boolean_expression;

3

trincot 27 ΠžΠΊΡ‚ 2020 Π² 08:03

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ

var even = function(x)
{
   return x % 2 === 0
}
 

0

Owais Ahmed Khan 27 ΠžΠΊΡ‚ 2020 Π² 08:07

var even = function(x) {
    if (typeof x === "number") {
        if (x % 2 === 0) {
            return true
        } else {
            return false
        }
    } else {
        return false

    }
}

Π­Ρ‚ΠΎ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ случаи

0

Goutham JM 27 ΠžΠΊΡ‚ 2020 Π² 08:22

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка (HOF) Π² JavaScript

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка (higher order functions) Π² JavaScript — Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π½Π° любом языкС.

Ѐункция Π±ΠΎΠ»Π΅Π΅ высокого порядка выполняСт ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½Ρƒ (Ρ‡Π°Ρ‰Π΅ ΠΎΠ±Π΅) ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ:

  • ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°;
  • Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, ΠΌΡ‹ создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ высокого порядка, withCount(), которая ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² консоль ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, сколько Ρ€Π°Π· ΠΎΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ args с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π°.

const withCount = fn => {
  let count = 0;

  return (...args) => {
    console.log("calling with", args);
    console.log(`Call count: ${++count}`);
    const result = fn(...args);
    console.log("called with", args, ", returned", result);
    return result;
  };
};

withCount ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fn Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Она Π±ΡƒΠ΄Π΅Ρ‚, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² консоль ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, сколько Ρ€Π°Π· ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ Π½Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ args. Для этого ΠΌΡ‹ создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

count с ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ rest для сбора, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² консоль Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ count, ΠΏΠ΅Ρ€Π΅Π΄ этим увСличивая Π΅Π³ΠΎ. И Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ spread ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ функция Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка — withCount, Π΄Π°Π²Π°ΠΉ создадим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ add для использования ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΅ΠΉ. Ѐункция add ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ x ΠΈ y Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΈΡ… суммированиС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ countedAdd, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π°ΡˆΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ withCount, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ add.

const withCount = fn => {
  let count = 0;

  return (...args) => {
    console.log("calling with", args);
    console.log(`Call count: ${++count}`);
    const result = fn(...args);
    console.log("called with", args, ", returned", result);
    return result;
  };
};

const add = (x, y) => x + y;

const countedAdd = withCount(add);

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉ Π²Ρ‹ΠΉΠ΄Π΅ΠΌ Π² консоль Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования countedAdd, с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

const withCount = fn => {
  let count = 0;

  return (...args) => {
    console.log("calling with", args);
    console.log(`Call count: ${++count}`);
    const result = fn(...args);
    console.log("called with", args, ", returned", result);
    return result;
  };
};
const add = (x, y) => x + y;

const countedAdd = withCount(add);

console.log(countedAdd(1, 2));
console.log(countedAdd(2, 2));
console.log(countedAdd(3, 2));

Если ΠΌΡ‹ запустим это, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² консолС количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ args с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

calling with [1, 2]
Call count: 1
called with [1, 2] , returned 3
3

calling with [2, 2]
Call count: 2
called with [2, 2] , returned 4
4

calling with [3, 2]
Call count: 3
called with [3, 2] , returned 5
5

ПониманиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² JavaScript | DigitalOcean

Автор Π²Ρ‹Π±Ρ€Π°Π» Ρ„ΠΎΠ½Π΄ Open Internet/Free Speech для получСния поТСртвования Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Write for DOnations.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ ECMAScript 2015 Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для языка JavaScript. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Β β€” это процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ остановлСн ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π“Π΅Π½Π°Ρ€Π°Ρ‚ΠΎΡ€ Π² JavaScript состоит ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт Generator, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ эффСктивный способ создания ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с бСсконСчным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для установки бСсконСчной ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π½Π° внСшнСм интСрфСйсС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Π²ΠΎΠ»Π½Ρ‹ ΠΈ Ρ‚. Π΄. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ использовании Promises Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ async/await, которая позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с асинхронным ΠΊΠΎΠ΄ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ простым ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ способом. Π₯отя async/await являСтся Π±ΠΎΠ»Π΅Π΅ распространСнным способом Ρ€Π°Π±ΠΎΡ‚Ρ‹ с асинхронными Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ использования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· API, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ функциями, Ρ‡Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡ… использования.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Generator, объясним Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ yield ΠΈ return Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ коснСмся Π΄Ρ€ΡƒΠ³ΠΈΡ… аспСктов Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Ѐункция-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ β€” это функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ опрСдСляСтся ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° (*), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

// Generator function declaration
function* generatorFunction() {}

Иногда Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° отобраТаСтся рядом с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ function *generatorFunction(). Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, Π½ΠΎ функция со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ function* являСтся Π±ΠΎΠ»Π΅Π΅ распространСнной синтаксичСской конструкциСй.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

// Generator function expression
const generatorFunction = function*() {}

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°ΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ класса:

// Generator as the method of an object
const generatorObj = {
  *generatorMethod() {},
}

// Generator as the method of a class
class GeneratorClass {
  *generatorMethod() {}
}

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ синтаксичСская конструкция объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова return. Если ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ​​​return, функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined.

НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sum(), которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, состоящСС ΠΈΠ· суммы Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

// A regular function that sums two values
function sum(a, b) {
  return a + b
}

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт собой сумму Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

const value = sum(5, 6) // 11

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

// Declare a generator function with a single return value
function* generatorFunction() {
  return 'Hello, Generator!'
}

Активация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт Generator, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ отнСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

// Assign the Generator object to generator
const generator = generatorFunction()

Если Π±Ρ‹ это Π±Ρ‹Π»Π° ΡˆΡ‚Π°Ρ‚Π½Π°Ρ функция, ΠΌΡ‹ Π±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ даст Π½Π°ΠΌ строку, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Однако фактичСски ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ элСмСнт Π² приостановлСнном состоянии. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹Π·ΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° даст Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

Output

generatorFunctionΒ {<suspended>} __proto__: Generator [[GeneratorLocation]]: VM272:1 [[GeneratorStatus]]: "suspended" [[GeneratorFunction]]: Ζ’* generatorFunction() [[GeneratorReceiver]]: Window [[Scopes]]: Scopes[3]

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Generator, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ β€” это ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ​​​​​​next()​​​, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄ next() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт со свойствами value ΠΈ done. value ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° done ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΏΡ€ΠΎΡˆΠ΅Π» Π»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ всС свои значСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Зная это, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ next() нашСго Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ состояниС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

// Call the next method on the Generator object
generator.next()

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Output

{value: "Hello, Generator!", done: true}

Π’Ρ‹Π·ΠΎΠ² next() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Hello, Generator!, Π° состояниС done ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ· return, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Π»ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, статус Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ с suspended Π½Π° closed. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° даст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Output

generatorFunctionΒ {<closed>}

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

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

yield

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вводят Π½ΠΎΠ²ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π² JavaScript: yield. yield ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт Π·Π° yield, Ρ‚Π΅ΠΌ самым обСспСчивая Π±ΠΎΠ»Π΅Π΅ простой способ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ остановим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²Π΅Ρ€Π½Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Generator для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

// Create a generator function with multiple yields
function* generatorFunction() {
  yield 'Neo'
  yield 'Morpheus'
  yield 'Trinity'

  return 'The Oracle'
}

const generator = generatorFunction()

БСйчас, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ next()​​​​​ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒ yield. done Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ для false​​​ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ yield, указывая Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½. Когда ΠΎΠ½Π° встрСтит return ΠΈΠ»ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ yield, done ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π½Π° true, ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ next() Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π° Π² строкС:

// Call next four times
generator.next()
generator.next()
generator.next()
generator.next()

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки ΠΏΠΎ порядку:

Output

{value: "Neo", done: false} {value: "Morpheus", done: false} {value: "Trinity", done: false} {value: "The Oracle", done: true}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π΅ трСбуСтся return. Π’ случаС пропуска послСдняя итСрация Π²Π΅Ρ€Π½Π΅Ρ‚ {value: undefined, done: true}​​​, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ наличия ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² next() послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° next() ΠΌΡ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Generator​​​, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² всС свойства value​​​ ΠΈ done всСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Однако, ΠΊΠ°ΠΊ ΠΈ Array,Map ΠΈ Set, Generator слСдуСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с for...of:

// Iterate over Generator object
for (const value of generator) {
  console.log(value)
}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Output

Neo Morpheus Trinity

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для присвоСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Generator​​​ для массива.

// Create an array from the values of a Generator object
const values = [...generator]

console.log(values)

Π­Ρ‚ΠΎ даст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ массив:

Output

(3)Β ["Neo", "Morpheus", "Trinity"]

Как Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ for...of​​​ Π½Π΅ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ return Π½Π° значСния (Π² этом случаС Π±Ρ‹Π»ΠΎ Π±Ρ‹ Β«The OracleΒ»).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π₯отя ΠΎΠ±Π° эти ΠΌΠ΅Ρ‚ΠΎΠ΄Π° эффСктивны для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, Ссли Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с бСсконСчным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ for...of​​​ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Π΅Π· создания бСсконСчного Ρ†ΠΈΠΊΠ»Π°.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Как ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ своС свойство done​​​ Π½Π° true, Π° статус Π½Π° closed ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ всСх своих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НСмСдлСнно ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дСйствиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ двумя способами: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° return() ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° throw().

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ return()​​ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° любом этапС Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ return Π±Ρ‹Π»ΠΎ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² return() ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ пустым для Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ return(), ΠΌΡ‹ создадим Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ с нСсколькими значСниями yield, Π½ΠΎ Π±Π΅Π· return Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

function* generatorFunction() {
  yield 'Neo'
  yield 'Morpheus'
  yield 'Trinity'
}

const generator = generatorFunction()

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ next() даст Π½Π°ΠΌ Β«NeoΒ» c done установлСнным Π½Π° false​​​. Если ΠΌΡ‹ обратимся ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ return()​​​ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Generator сразу послС этого, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈ done Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π½Π° true. ВсС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ next() Π΄Π°Π΄ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, запуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅:

generator.next()
generator.return('There is no spoon!')
generator.next()

Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Ρ‚Ρ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

Output

{value: "Neo", done: false} {value: "There is no spoon!", done: true} {value: undefined, done: true}

ΠœΠ΅Ρ‚ΠΎΠ΄ return() заставил ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Generator Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова yield. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² асинхронном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² случаС прСрывания Π²Π΅Π±-запроса, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ дСйствиС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Promise.

Если Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ throw() для пСрСбрасывания ошибки Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. Π­Ρ‚ΠΎ дСйствиС запустит Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, пСрСбросит Π² Π½Π΅Π³ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, ΠΌΡ‹ помСстим try...catch​​​ Π² Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ зарСгистрируСм ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ Π΅Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ:

// Define a generator function with a try...catch
function* generatorFunction() {
  try {
    yield 'Neo'
    yield 'Morpheus'
  } catch (error) {
    console.log(error)
  }
}

// Invoke the generator and throw an error
const generator = generatorFunction()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ запустим ΠΌΠ΅Ρ‚ΠΎΠ΄ next()​​, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ послСдуСт throw():

generator.next()
generator.throw(new Error('Agent Smith!'))

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Output

{value: "Neo", done: false} Error: Agent Smith! {value: undefined, done: true}

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ throw(), ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, которая Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π° try...catch ΠΈ зарСгистрирована Π² консоли.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ прСдставлСн ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Generator:

ΠœΠ΅Ρ‚ΠΎΠ΄ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
next()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
return()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
throw()Π’Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ пСрСчислСны Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Generator:

Π‘ΠΎΡΡ‚ΠΎΡΠ½ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
suspendedΠ“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ остановил Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ
closedΠ“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° обнаруТСния ошибки, возвращСния ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

yield Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Помимо ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° yield, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ yield* для дСлСгирования ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ. Когда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ yield* встрСчаСтся Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅, ΠΎΠ½ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ всСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ yield Π΄ΠΎ закрытия этого Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано для раздСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° для сСмантичСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈ этом итСрация всСх ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² yield Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС.

Для дСмонстрации ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ yield* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ:

// Generator function that will be delegated to
function* delegate() {
  yield 3
  yield 4
}

// Outer generator function
function* begin() {
  yield 1
  yield 2
  yield* delegate()
}

Π”Π°Π»Π΅Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ посрСдством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ begin():

// Iterate through the outer generator
const generator = begin()

for (const value of generator) {
  console.log(value)
}

Π­Ρ‚ΠΎ даст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния Π² порядкС ΠΈΡ… гСнСрирования:

Output

1 2 3 4

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π΄Π°Π» значСния 1 ΠΈ 2, Π·Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π» Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ с yield*, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Ρ€Π½ΡƒΠ» 3 ΠΈ 4.

yield* Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Array ΠΈΠ»ΠΈ Map. Yield Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любая функция Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ yield, Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

БСсконСчный ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

Один ΠΈΠ· ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… аспСктов Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с бСсконСчными ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈ коллСкциями Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ бСсконСчного Ρ†ΠΈΠΊΠ»Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ число Π½Π° 1.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ Π·Π°Ρ‚Π΅ΠΌ запускаСм Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€:

// Define a generator function that increments by one
function* incrementer() {
  let i = 0

  while (true) {
    yield i++
  }
}

// Initiate the generator
const counter = incrementer()

Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с использованиСм next():

// Iterate through the values
counter.next()
counter.next()
counter.next()
counter.next()

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Output

{value: 0, done: false} {value: 1, done: false} {value: 2, done: false} {value: 3, done: false}

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π² бСсконСчном Ρ†ΠΈΠΊΠ»Π΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ свойство done остаСтся false, обСспСчивая Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈ использовании Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ создании бСсконСчного Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. Однако, Π²Ρ‹ всС-Ρ‚Π°ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ остороТны с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ for...of для бСсконСчного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ бСсконСчного Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ срСды.

Для Π±ΠΎΠ»Π΅Π΅ слоТного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° бСсконСчного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Fibonacci. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, которая Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ складываСт Π΄Π²Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… значСния вмСстС, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записана с использованиСм бСсконСчного Ρ†ΠΈΠΊΠ»Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

// Create a fibonacci generator function
function* fibonacci() {
  let prev = 0
  let next = 1

  yield prev
  yield next

  // Add previous and next values and yield them forever
  while (true) {
    const newVal = next + prev

    yield newVal

    prev = next
    next = newVal
  }
}

Для тСстирования ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ числа ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π² консоль.

// Print the first 10 values of fibonacci
const fib = fibonacci()

for (let i = 0; i < 10; i++) {
  console.log(fib.next().value)
}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Output

0 1 1 2 3 5 8 13 21 34

Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с бСсконСчными Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… β€” это ΠΎΠ΄Π½ΠΎ ΠΈΠ· свойств, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом. Π­Ρ‚Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для установки бСсконСчной ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π½Π° внСшнСм интСрфСйсС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ описывали использованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² качСствС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ значСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Помимо производства Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ значСния ΠΎΡ‚ next(). Π’ этом случаС yield Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΉ next() Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ запустит Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€. Для дСмонстрации этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ yield ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ next() нСсколько Ρ€Π°Π· с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ значСниями.

function* generatorFunction() {
  console.log(yield)
  console.log(yield)

  return 'The end'
}

const generator = generatorFunction()

generator.next()
generator.next(100)
generator.next(200)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Output

100 200 {value: "The end", done: true}

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ с ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создадим Ρ†ΠΈΠΊΠ» for ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ next(), Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

function* generatorFunction(value) {
  while (true) {
    value = yield value * 10
  }
}

// Initiate a generator and seed it with an initial value
const generator = generatorFunction(0)

for (let i = 0; i < 5; i++) {
  console.log(generator.next(i).value)
}

ΠœΡ‹ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· next() ΠΈ создадим Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ,ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Π½Π° Π΄Π΅ΡΡΡ‚ΡŒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Output

0 10 20 30 40

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ запуска Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” Π·Π°Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ next() ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

async/await Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…

Асинхронная функция β€” Π²ΠΈΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Π² ES6+ JavaScript, которая ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с асинхронными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, дСлая ΠΈΡ… синхронными. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ спСктром возмоТностСй, Ρ‡Π΅ΠΌ асинхронныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ способны Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. РСализация асинхронного программирования Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ вашСго ΠΊΠΎΠ΄Π°.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ продСмонстрируСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ воспроизвСдСния async/await с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Fetch API для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· JSONPlaceholder API (Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… JSON для тСстирования) ΠΈ рСгистрируСт ΠΎΡ‚Π²Π΅Ρ‚ Π² консоли.

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ getUsers, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· API ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ getUsers:

const getUsers = async function() {
  const response = await fetch('https://jsonplaceholder.typicode.com/users')
  const json = await response.json()

  return json
}

// Call the getUsers function and log the response
getUsers().then(response => console.log(response))

Π­Ρ‚ΠΎ даст Π΄Π°Π½Π½Ρ‹Π΅ JSON, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

Output

[ {id: 1, name: "Leanne Graham" ...}, {id: 2, name: "Ervin Howell" ...}, {id: 3, name": "Clementine Bauch" ...}, {id: 4, name: "Patricia Lebsack"...}, {id: 5, name: "Chelsey Dietrich"...}, ...]

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова async/await. ВмСсто этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ новая созданная Π½Π°ΠΌΠΈ функция ΠΈ значСния yield вмСсто промисов await.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ getUsers, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π°ΡˆΡƒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ asyncAlt (Π±ΡƒΠ΄Π΅Ρ‚ описана ΠΏΠΎΠ·ΠΆΠ΅) для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ async/await.

const getUsers = asyncAlt(function*() {
  const response = yield fetch('https://jsonplaceholder.typicode.com/users')
  const json = yield response.json()

  return json
})

// Invoking the function
getUsers().then(response => console.log(response))

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΎΠ½Π° выглядит ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ async/await, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ имССтся функция Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, которая пСрСдаСтся Π² этих значСниях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ yield.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ asyncAlt, которая Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. asyncAlt​​​ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ являСтся нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ промисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Ρ‹. asyncAlt​​​ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСпосрСдствСнно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ промис Π΄ΠΎ послСднСго:

// Define a function named asyncAlt that takes a generator function as an argument
function asyncAlt(generatorFunction) {
  // Return a function
  return function() {
    // Create and assign the generator object
    const generator = generatorFunction()

    // Define a function that accepts the next iteration of the generator
    function resolve(next) {
      // If the generator is closed and there are no more values to yield,
      // resolve the last value
      if (next.done) {
        return Promise.resolve(next.value)
      }

      // If there are still values to yield, they are promises and
      // must be resolved.
      return Promise.resolve(next.value).then(response => {
        return resolve(generator.next(response))
      })
    }

    // Begin resolving promises
    return resolve(generator.next())
  }
}

Π­Ρ‚ΠΎ даст Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Π² вСрсии async/await:

Output

[ {id: 1, name: "Leanne Graham" ...}, {id: 2, name: "Ervin Howell" ...}, {id: 3, name": "Clementine Bauch" ...}, {id: 4, name: "Patricia Lebsack"...}, {id: 5, name: "Chelsey Dietrich"...}, ...]

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, эта рСализация ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для дСмонстрации Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вмСсто async/await, ΠΈ Π½Π΅ являСтся Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ для эксплуатации конструкциСй. Π’ Π½Π΅ΠΉ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ настройки ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΈ Π½Π΅Ρ‚ возмоТности ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ значСния. Π₯отя этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ, async/await Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ способСн Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ позволяСт ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° написании ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

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

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ β€” это процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½ΠΎΠΉ, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ, хотя ΠΈ Π½Π΅ слишком распространСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ JavaScript. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ пособии ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ функциях ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, доступных для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… yield ΠΈ yield*, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈ бСсконСчными массивами Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ асинхронного ΠΊΠΎΠ΄Π° Π±Π΅Π· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ промисов.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ синтаксисС JavaScript, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌΠΈ пособиями ПониманиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² This, Bind, Call ΠΈ Apply Π² JavaScript​​​ ΠΈ ПониманиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Map ΠΈ Set Π² JavaScript.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ офис. ОбъясняСм простыми словами β€” Π‘Π΅ΠΊΡ€Π΅Ρ‚ Ρ„ΠΈΡ€ΠΌΡ‹

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ β€” это любая затСя, нацСлСнная Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. НапримСр, Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ линию ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² Π·Π° 2 Π³ΠΎΠ΄Π° ΠΊ Π•Π“Π­, ΠΈΠ»ΠΈ изобрСсти Π²Π°ΠΊΡ†ΠΈΠ½Ρƒ ΠΎΡ‚ коронавируса β€” всё это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ цСлями, финансовым обоснованиСм, ΠΊΡ€ΡƒΠ³ΠΎΠΌ отвСтствСнных.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ офис появляСтся Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ мноТСство ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² Π½ΠΈΡ… Π΅Π΄ΠΈΠ½Ρ‹Π΅ стандарты.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ офиса:

  • Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½Ρ‹Ρ… стандартов управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ;
  • ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²;
  • отслСТиваниС ΠΈΡ… выполнСния;
  • ΠΎΡ†Π΅Π½ΠΊΠ° эффСктивности ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ отчётности.

Π’ΠΎ, насколько сильно ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ офис Π²ΠΎΠ²Π»Π΅Ρ‡Ρ‘Π½ нСпосрСдствСнно Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, зависит ΠΎΡ‚ потрСбностСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ употрСблСния Π½Π° Β«Π‘Π΅ΠΊΡ€Π΅Ρ‚Π΅Β»

Β«ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² стандартизации ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ управлСния Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ‹ ΠΈ гСография бизнСса ΡƒΠΆΠ΅ Π½Π΅ позволяли ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π°Π²ΠΎΠ΄Ρƒ ΠΈΠ»ΠΈ бизнСс-ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅ΠΈ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌΡƒ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ порядкС. БизнСс Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΈ вСдСнию ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ ΠΌΡ‹ нашли ΠΈΡ… Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ офиса».

(Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Ρ‚Π½Ρ‘Ρ€ Β«Π’Π΅Ρ…Π½ΠΎΠ½ΠΈΠΊΠΎΠ»ΡŒΒ» Π‘Π΅Ρ€Π³Π΅ΠΉ КолСсников β€” ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.)

Ошибки Π² ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ

Иногда ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ офис ΠΏΡƒΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ с ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ систСмой управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ (КБУП). ΠŸΠΎΡ€Ρ‚Ρ„Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ для выполнСния ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΉ для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. НапримСр, торговая ΡΠ΅Ρ‚ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡŒ всСй ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², выпускаСмых ΠΏΠΎΠ΄ собствСнным Π±Ρ€Π΅Π½Π΄ΠΎΠΌ. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послуТат этой Ρ†Π΅Π»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»ΡŒ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ офис слуТит Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для навСдСния порядка Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, стратСгичСскиС Ρ†Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ систСма управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ (КБУП) β€” это стандарты выполнСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° прСдприятии, Π° Ρ‚Π°ΠΊΠΆΠ΅ информационная систСма ΠΏΠΎ ΠΈΡ… ΡƒΡ‡Ρ‘Ρ‚Ρƒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ офис β€” это Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ систСмы управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΎΠ½ слСдит Π·Π° Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΈ настройкой.

ΠΡŽΠ°Π½ΡΡ‹

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ управлСния сформулировал амСриканский Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Project Management Institute, PMI). Π­Ρ‚Π° нСкоммСрчСская организация выдСляСт нСсколько Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… офисов.

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ. Π•Π³ΠΎ основная функция β€” ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Π°Ρ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ прСдоставляСт стандарты для Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ систСму управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ собираСт статистику. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ офис Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ. К экспСртизС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ вСдСнию статистики добавляСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ. ΠžΡ„ΠΈΡ участвуСт Π² принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΠ±ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ соотвСтствиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° принятым Π½Π° прСдприятии ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ.
  • Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ. ЗанимаСтся нСпосрСдствСнным ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ: распрСдСляСт рСсурсы, опрСдСляСт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹, Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ отвСтствСнных, отчитываСтся ΠΏΠ΅Ρ€Π΅Π΄ руководством Π·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π€Π°ΠΊΡ‚

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ΠΎΠΌ управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ справочник β€” Β«ΠšΠΎΡ€ΠΏΡƒΡ Π·Π½Π°Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈΒ» (Project Management Body of Knowledge, PMBOK). ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Π°Ρ организация ΠΏΠΎ стандартизации (ISO) Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π° ΠΈΡ… Π² стандарт ISO 10006 Β«Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ качСством Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…Β». Π’ России Π½Π° Π΅Π³ΠΎ основС выпустили нСсколько Π“ΠžΠ‘Π’ΠΎΠ² ΠΏΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Один ΠΈΠ· Π½ΠΈΡ… посвящён стандартам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ офиса.

Π‘Ρ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»Π°:

Jaguar E-PACE | ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ кроссовСр

†УказанныС Π΄Π°Π½Π½Ρ‹Π΅ относятся ΠΊ NEDC2 ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ испытаний производитСля, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² соотвСтствии с трСбованиями WLTP ΠΈ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ Π•Π‘ ΠΏΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ заряТСнной аккумуляторной Π±Π°Ρ‚Π°Ρ€Π΅Π΅. Волько для сравнСния. ЀактичСскиС значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. ЗначСния выбросов CO2, запаса Ρ…ΠΎΠ΄Π°, расхода Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° ΠΈ энСргии ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΊΠ°ΠΊ ΡΡ‚ΠΈΠ»ΡŒ воТдСния, условия ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΉ срСды, Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, колСсныС диски ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. ЗначСния NEDC2 Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ принятой Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ WLTP ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ эквивалСнтными показатСлям ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ Ρ†ΠΈΠΊΠ»Π° NEDC. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², опрСдСляСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ налогооблоТСния.


Β±
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ объСма Wet ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ модСлирования заполнСния Π±Π°Π³Π°ΠΆΠ½ΠΎΠ³ΠΎ отдСлСния ΠΆΠΈΠ΄ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌΡƒ стандарту. ОбъСм измСряСтся Π΄ΠΎ ΠΎΡ‚Π΄Π΅Π»ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠ°. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ объСм Π±Π°Π³Π°ΠΆΠ½ΠΎΠ³ΠΎ отдСлСния зависят ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ автомобиля (вСрсии ΠΈ силового Π°Π³Ρ€Π΅Π³Π°Ρ‚Π°), Ρ€Ρ‹Π½ΠΊΠ° сбыта, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ запасноС колСсо установлСно: ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.


1Зависит ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ.

2Π’ вашСм Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму Apple CarPlay. Услуги, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ систСмой Apple CarPlay, зависят ΠΎΡ‚ доступности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² вашСй странС. ΠžΠΏΡ†ΠΈΡ Π½Π΅ доступна для Ρ€Ρ‹Π½ΠΊΠΎΠ² АрмСнии, БСлоруссии ΠΈ ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½Π°.

3Π’ вашСм Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму Android Auto. Услуги, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ систСмой Android Auto, зависят ΠΎΡ‚ доступности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² вашСй странС. ΠžΠΏΡ†ΠΈΡ Π½Π΅ доступна для Ρ€Ρ‹Π½ΠΊΠΎΠ² АрмСнии, БСлоруссии ΠΈ ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½Π°.

4ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Remote Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя услуги, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ подписки. По истСчСнии срока дСйствия подписку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π΄ΠΈΠ»Π΅Ρ€Ρƒ Jaguar. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Jaguar Remote Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ Apple App StoreΒ / Google Play Store.

5Для использования ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Π²Π°ΠΌ потрСбуСтся ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ подписку ΠΏΠΎ истСчСнии ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠΌ Jaguar срока.

6ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ использования. Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΡ†ΠΈΠΉ зависит ΠΎΡ‚ Ρ€Ρ‹Π½ΠΊΠ°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»Π½Ρ‹Ρ… условиях для вашСй страны уточняйтС Ρƒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ»Π΅Ρ€Π° Jaguar. ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½Π° подписка Π½Π° 1 Π³ΠΎΠ΄. По истСчСнии срока дСйствия подписку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π΄ΠΈΠ»Π΅Ρ€Ρƒ Jaguar.

7Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΡ†ΠΈΠΉ зависит ΠΎΡ‚ Ρ€Ρ‹Π½ΠΊΠ°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»Π½Ρ‹Ρ… условиях для вашСй страны уточняйтС Ρƒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ»Π΅Ρ€Π° Jaguar. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ использования. ΠŸΡ€ΠΈ достиТСнии Π»ΠΈΠΌΠΈΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… 20Β Π“Π‘ Π΄ΠΎ окончания мСсяца ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ использования, примСняСмой ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, см. полоТСния InControl Pivi ProΒ https://www.jaguar.ru/incontrol/incontrol-support/terms-and-conditions.html.

8ВрСмя воспроизвСдСния зависит ΠΎΡ‚ поставщика ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. Π’ΠΈΠ΄Π΅ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ HD Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΊΠ»ΡŽΡ‡Π°Ρ 1Β Π³ΠΎΠ΄ подписки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ ΠΏΠΎ истСчСнии срока дСйствия.

9Π”Π²Π° часа зарядки Π²ΠΎΠ΄ΠΎΠ½Π΅ΠΏΡ€ΠΎΠ½ΠΈΡ†Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°-браслСта для доступа Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Activity Key обСспСчиваСт Ρ€Π°Π±ΠΎΡ‚Ρƒ элСмСнта питания Π΄ΠΎ 10Β Π΄Π½Π΅ΠΉ.


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


Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ установлСнныС Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ систСмы, соблюдая ΠΏΡ€Π°Π²ΠΈΠ»Π° бСзопасности. Π’ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ обязан Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ.


Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠΏΡ†ΠΈΠΉ Pivi ΠΈ InControl, Π° Ρ‚Π°ΠΊΠΆΠ΅ услуг сторонних поставщиков зависит ΠΎΡ‚ Ρ€Ρ‹Π½ΠΊΠ°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈ ΠΏΠΎΠ»Π½Ρ‹Ρ… условиях для вашСй страны уточняйтС Ρƒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ»Π΅Ρ€Π° Jaguar. ΠŸΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ мобильной сСти Π½Π΅ гарантируСтся повсСмСстно. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ InControl ΠΈ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΅Π΅ изобраТСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ экрана ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмных/Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… настроСк, связанных с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ.


Apple CarPlay являСтся зарСгистрированным Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apple Inc. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ соглашСниС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apple Inc.

Android Auto являСтся зарСгистрированным Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google LLC.

Meridian являСтся зарСгистрированным Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Meridian Audio Ltd. Trifield, Π° устройство Β«Three fieldsΒ» являСтся зарСгистрированным Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Trifield Productions Ltd.

NanoeTM являСтся Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ Panasonic Corporation

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ — JavaScript | MDN

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² JavaScript. Ѐункция Π² JavaScript ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ — Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ функция, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π³Π΄Π΅ сущСствуСт очСвидная связь ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ…ΠΎΠ΄ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² области видимости, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ.

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ Π³Π»Π°Π²Ρƒ ΠΎ функциях JavaScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ подробности.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ объявлСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ) состоит ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова function , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт:

  • Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ JavaScript, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, {...} .

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ опрСдСляСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ :

  функция ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ (число) {
  Π½ΠΎΠΌΠ΅Ρ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° * Π½ΠΎΠΌΠ΅Ρ€;
}
  

Ѐункция ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ числом .Ѐункция состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ число ), ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° самого сСбя. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ:

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, число) ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ Ссли функция измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° , это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ отраТаСтся глобально ΠΈΠ»ΠΈ Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ .

Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Ρ‚.Π΅., Π½Π΅ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ Массив ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈ функция измСняСт свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π½ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

  function myFunc (theObject) {
  theObject.make = 'Π’ΠΎΠΉΠΎΡ‚Π°';
}

var mycar = {ΠΌΠ°Ρ€ΠΊΠ°: 'Honda', модСль: 'Accord', Π³ΠΎΠ΄: 1998};
var x, y;

x = mycar.make;

myFunc (mycar);
y = mycar.make;
                
  

ВыраТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π₯отя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ синтаксичСски являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ ; Ρƒ Π½Π΅Π³ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ имя. НапримСр, функция ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ:

  const square = функция (число) {Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ число * число}
var x = ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ (4)
  

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

  const factorial = функция fac (n) {return n <2? 1: n * fac (n - 1)}

консоль.ΠΆΡƒΡ€Π½Π°Π» (Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (3))
  

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния ΡƒΠ΄ΠΎΠ±Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° функция map , которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ массив Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

  Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΊΠ°Ρ€Ρ‚Π° (f, a) {
  ΠΏΡƒΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = [];
  ΠΌΠΎΠ³Ρƒ я;
  для (i = 0; i! = a.length; i ++)
    Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ [i] = f (a [i]);
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;
}
  

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ функция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ выполняСт Π΅Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

  Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΊΠ°Ρ€Ρ‚Π° (f, a) {
  ΠΏΡƒΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = [];
  ΠΌΠΎΠ³Ρƒ я;
  для (i = 0; i! = a.длина; я ++)
    Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ [i] = f (a [i]);
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;
}
const f = function (x) {
   Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ… * Ρ… * Ρ…;
}
ΠΏΡƒΡΡ‚ΡŒ числа = [0, 1, 2, 5, 10];
ΠΏΡƒΡΡ‚ΡŒ ΠΊΡƒΠ± = ΠΊΠ°Ρ€Ρ‚Π° (Π΅, числа);
console.log (ΠΊΡƒΠ±);
  

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: [0, 1, 8, 125, 1000] .

Π’ JavaScript функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π½Π° основС условия. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСляСт myFunc , Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли num Ρ€Π°Π²Π½ΠΎ 0 :

  var myFunc;
if (num === 0) {
  myFunc = function (theObject) {
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.make = 'Toyota';
  }
}
  

Помимо опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ описано здСсь, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструктор Function для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· строки Π²ΠΎ врСмя выполнСния, ΠΊΠ°ΠΊ ΠΈ eval () .

ΠœΠ΅Ρ‚ΠΎΠ΄ - это функция, которая являСтся свойством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈ ​​мСтодах Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ выполняСт Π΅Π΅. Π•Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π΅Ρ‚ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ 5 . Ѐункция выполняСт свои ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 25 .

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² области видимости , ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Π½ΠΎ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ поднято (появится ΠΏΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Π² ΠΊΠΎΠ΄Π΅), ΠΊΠ°ΠΊ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

  консоль.Π±Ρ€Π΅Π²Π½ΠΎ (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ (5));

функция square (n) {return n * n}
  

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ - это функция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° объявлСна ​​(ΠΈΠ»ΠΈ вся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ссли ΠΎΠ½Π° объявлСна ​​на Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с использованиСм ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ синтаксиса (Ρ‚. Π•. function funcName () {} ). ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ подъСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с объявлСниями Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ - Π½ΠΎ Π½Π΅ с выраТСниями Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ .

  console.log (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚)
console.log (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ (5))
const square = function (n) {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ n * n;
}
  

АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ строками ΠΈ числами. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ†Π΅Π»Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Ѐункция showProps () (опрСдСлСнная Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ) являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ сама сСбя. НапримСр, Π²ΠΎΡ‚ функция, рСкурсивно Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π°Ρ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹:

  function factorial (n) {
  Ссли ((n === 0) || (n === 1))
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 1;
  Π΅Ρ‰Π΅
    return (n * Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (n - 1));
}
  

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹ ΠΎΡ‚ 1 Π΄ΠΎ 5 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  var a, b, c, d, e;
Π° = Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (1);
b = Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (2);
c = Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (3);
d = Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (4);
Π΅ = Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» (5);
  

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

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сами ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ - ΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. (Π‘ΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Function .) Один ΠΈΠ· Π½ΠΈΡ…, ΠΌΠ΅Ρ‚ΠΎΠ΄ apply () , ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для достиТСния этой Ρ†Π΅Π»ΠΈ.

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

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, функция, опрСдСлСнная Π² глобальной области видимости, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠΎ всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² глобальной области видимости. Ѐункция, опрСдСлСнная Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠΎ всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² Π΅Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ функция ΠΈΠΌΠ΅Π΅Ρ‚ доступ.

 
var num1 = 20,
    число2 = 3,
    name = 'Π§Π°ΠΌΠ°Ρ…';


function multiply () {
  return num1 * num2;
}

ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ();


function getScore () {
  var num1 = 2,
      число2 = 3;

  function add () {
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ имя + 'Π·Π°Π±ΠΈΠ»' + (num1 + num2);
  }

  return add ();
}

getScore ();
  

РСкурсия

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ самой сСбС ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅.Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° сСбя трСмя способами:

  1. Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  2. arguments.callee
  3. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π² области видимости, которая ссылаСтся Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

НапримСр, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  var foo = function bar () {
   
}
  

Π’ Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ эквивалСнты:

  1. Π±Π°Ρ€ ()
  2. arguments.callee ()
  3. foo ()

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

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» ...

  var x = 0;
while (x <10) {
   
   x ++;
}
  

... ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² объявлСниС рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  function loop (x) {
  Ссли (x> = 10)
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅;
  
  пСтля (Ρ… + 1);
}
пСтля (0);
  

Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ простыми ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ.НапримСр, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΡƒΠ·Π»Ρ‹ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры (Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ DOM) ΠΏΡ€ΠΎΡ‰Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСкурсии:

  function walkTree (node) {
  Ссли (ΡƒΠ·Π΅Π» == Π½ΡƒΠ»ΡŒ)
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅;
  
  for (var i = 0; i  

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ , Ρ†ΠΈΠΊΠ» , ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ рСкурсивный Π²Ρ‹Π·ΠΎΠ² сам ΠΏΠΎ сСбС Π΄Π΅Π»Π°Π΅Ρ‚ здСсь ΠΌΠ½ΠΎΠ³ΠΎ рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

МоТно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ любой рСкурсивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² нСрСкурсивный, Π½ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° часто Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, ΠΈ для этого трСбуСтся использованиС стСка.

ЀактичСски, сама рСкурсия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стСк: стСк Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ПовСдСниС Π² Π²ΠΈΠ΄Π΅ стСка ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

  function foo (i) {
  Ссли (я <0)
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅;
  console.log ('Π½Π°Ρ‡Π°Π»ΠΎ:' + я);
  foo (я - 1);
  console.log ('ΠΊΠΎΠ½Π΅Ρ†:' + я);
}
foo (3);











  

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ замыкания

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ВлоТСнная (внутрСнняя) функция являСтся частной для своСй содСрТащСй (внСшнСй) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΡ€Ρ‹ΡˆΠΊΡƒ .Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ - это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Ρ‡Π°Ρ‰Π΅ всСго функция), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свободныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ вмСстС со срСдой, которая связываСт эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (которая Β«Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Β» Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ влоТСнная функция являСтся Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ΠΌ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ влоТСнная функция ΠΌΠΎΠΆΠ΅Ρ‚ Β«Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΒ» Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ содСрТащСйся Π² Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, внутрСнняя функция содСрТит ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π‘ΡƒΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ:

  • Доступ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • ВнутрСнняя функция ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅: внутрСнняя функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ внСшняя функция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  function addSquares (a, b) {
  function square (x) {
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ… * Ρ…;
  }
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ (Π°) + ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ (Π±);
}
Π° = addSquares (2, 3);
b = addSquares (3, 4);
c = addSquares (4, 5);
  

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ внутрСнняя функция ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ внСшнюю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ для внСшнСй, Ρ‚Π°ΠΊ ΠΈ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  функция снаруТи (Ρ…) {
  function inside (y) {
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ x + y;
  }
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΡŒ;
}
fn_inside = снаруТи (3);
                        
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = fn_inside (5);

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚1 = снаруТи (3) (5);
  

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ x сохраняСтся, ΠΊΠΎΠ³Π΄Π° возвращаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ .Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²ΠΎ всСх областях, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΎ ссылаСтся. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² прСдоставляСт ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ создаСтся Π½ΠΎΠ²ΠΎΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ освобоТдСна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ большС Π½Π΅ доступСн.

Π­Ρ‚ΠΎ Π½Π΅ отличаСтся ΠΎΡ‚ хранСния ссылок Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, Π½ΠΎ часто ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ссылки Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎ-Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ мноТСствСнно-Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ.НапримСр:

  • Ѐункция ( A ) содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ( B ), которая сама содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ( C ).
  • ОбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ B ΠΈ C ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ здСсь Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅. Π˜Ρ‚Π°ΠΊ, B ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ A , Π° C ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ B .
  • ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ C ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ B , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ A , C Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ A .

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΠΊΡƒΠΏΠΎΡ€ΠΎΡ‡Π½Ρ‹Π΅ срСдства ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько областСй видимости; ΠΎΠ½ΠΈ рСкурсивно содСрТат объСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, содСрТащих Π΅Π³ΠΎ.Π­Ρ‚ΠΎ называСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ осциллографов . (ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ это называСтся «сцСплСниСм», ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΠΏΠΎΠ·ΠΆΠ΅.)

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  функция A (x) {
  функция B (y) {
    функция C (z) {
      console.log (x + y + z);
    }
    Π‘ (3);
  }
  Π‘Π˜ 2);
}
А (1);
  

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ C обращаСтся ΠΊ B y ΠΈ A x .

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  1. B ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠΊΡƒΠΏΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ срСдство, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ A (Ρ‚.Π΅.Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, B ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ A ).
  2. C ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠΊΡƒΠΏΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ срСдство, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ B .
  3. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ B Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ A , Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ C Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ A , C ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΊ B, ΠΈ A, Ρ‚Π°ΠΊ ΠΈ ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ . Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, C ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ с областями B ΠΈ A , Π² Ρ‚Π°ΠΊΠΎΠΌ порядкС .

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅Π²Π΅Ρ€Π½ΠΎ. A Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ C , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ A Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ B , ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся C . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, C остаСтся частным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для B .

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½

Когда Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² области дСйствия замыкания ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ имя, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½ . Π‘ΠΎΠ»Π΅Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ области ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, самая внутрСнняя ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Π° самая внСшняя ΠΎΠ±Π»Π°ΡΡ‚ΡŒ - наимСньший.Π­Ρ‚ΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° областСй видимости. ΠŸΠ΅Ρ€Π²Π°Ρ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ - это самая внутрСнняя ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π° послСдняя - самая внСшняя. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  функция Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ () {
  var x = 5;
  function inside (x) {
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ x * 2;
  }
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΡŒ;
}

снаруТи () (10);
  

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½ происходит ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ инструкции return x * 2 ΠΈ находится ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° x ΠΈ Π²Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x . Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° областСй видимости здСсь: { Π²Π½ΡƒΡ‚Ρ€ΠΈ , Π²Π½Π΅ , Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚}.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Π½ΡƒΡ‚Ρ€ΠΈ x ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ Π²Π½Π΅ x , ΠΈ возвращаСтся 20 ( Π²Π½ΡƒΡ‚Ρ€ΠΈ x ) вмСсто 10 ( Π²Π½Π΅ ). Ρ… ).

Замыкания - ΠΎΠ΄Π½Π° ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript. JavaScript позволяСт Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ прСдоставляСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊΠΎ всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ функциям, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΈ ΠΊΠΎ всСм Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ функциям, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ внСшняя функция ΠΈΠΌΠ΅Π΅Ρ‚ доступ).

Однако внСшняя функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступа ΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ функциям, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ обСспСчиваСт своСго Ρ€ΠΎΠ΄Π° ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ внутрСнняя функция ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ области дСйствия внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²ΠΎ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΆΠΈΡ‚ΡŒ дольшС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ссли Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ удастся Π²Ρ‹ΠΆΠΈΡ‚ΡŒ послС срока слуТбы внСшняя функция.Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ создаСтся, ΠΊΠΎΠ³Π΄Π° внутрСнняя функция ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ становится доступной для любой области Π²Π½Π΅ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

  var pet = function (name) {
  var getName = function () {
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ имя;
                             
  }
  return getName;
}
myPet = pet ('Π’ΠΈΠ²ΠΈ');

ΠΌΠΎΠΉ ΠΏΠΈΡ‚ΠΎΠΌΠ΅Ρ†();
  

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для управлСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

  var createPet = function (name) {
  var sex;

  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ {
    setName: function (newName) {
      name = newName;
    },

    getName: function () {
      Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ имя;
    },

    getSex: function () {
      ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹ΠΉ сСкс;
    },

    setSex: function (newSex) {
      if (typeof newSex === 'строка' && (newSex.toLowerCase () === 'муТской' ||
        newSex.toLowerCase () === 'female')) {
        sex = newSex;
      }
    }
  }
}

var pet = createPet ('Π’ΠΈΠ²ΠΈ');
pet.getName ();

домашний ΠΏΠΈΡ‚ΠΎΠΌΠ΅Ρ†.setName ('ΠžΠ»ΠΈΠ²Π΅Ρ€');
pet.setSex ('ΠΌΡƒΠΆΡ‡ΠΈΠ½Π°');
pet.getSex ();
pet.getName ();
  

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

  var getCode = (function () {
  var apiCode = '0] Eal (eh & 2';

  return function () {
    return apiCode;
  };
}) ();

ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄();
  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ слСдуСт ΠΎΡΡ‚Π΅Ρ€Π΅Π³Π°Ρ‚ΡŒΡΡ ряда Π»ΠΎΠ²ΡƒΡˆΠ΅ΠΊ!

Если закрытая функция опрСдСляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ пСрСмСнная Π²ΠΎ внСшнСй области видимости, Ρ‚ΠΎ Π½Π΅Ρ‚ возмоТности снова ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²ΠΎ внСшнСй области.(ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области видимости "пСрСопрСдСляСт" внСшнюю, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области видимости.)

  var createPet = function (name) {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ {
    setName: function (name) {
      name = name;
    }
  }
}
  

АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ хранятся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ массиву. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

, Π³Π΄Π΅ i - порядковый Π½ΠΎΠΌΠ΅Ρ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, начиная с 0 .Π˜Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ arguments [0] . ΠžΠ±Ρ‰Π΅Π΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π”Π»ΠΈΠ½Π° .

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ arguments , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с большим количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Π΅ΠΌ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ объявлСно для принятия. Π­Ρ‚ΠΎ часто Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, сколько Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ arguments.length , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², фактичСски ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° arguments .

НапримСр, рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ нСсколько строк. ЕдинствСнным Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся строка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ символы, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ элСмСнты для объСдинСния. Ѐункция опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  функция myConcat (Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ) {
   var result = '';
   var i;
   
   for (i = 1; i  

Π­Ρ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ ΠΎΠ½Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² строку «список»:

 
myConcat (',', 'красный', 'ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ', 'синий');


myConcat (';', 'слон', 'ΠΆΠΈΡ€Π°Ρ„', 'Π»Π΅Π²', 'Π³Π΅ΠΏΠ°Ρ€Π΄');


myConcat ('.',' ΡˆΠ°Π»Ρ„Π΅ΠΉ ',' Π±Π°Π·ΠΈΠ»ΠΈΠΊ ',' Π΄ΡƒΡˆΠΈΡ†Π° ',' ΠΏΠ΅Ρ€Π΅Ρ† ',' ΠΏΠ΅Ρ‚Ρ€ΡƒΡˆΠΊΠ° ');
  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ arguments Β«ΠΏΠΎΠ΄ΠΎΠ±Π½Π° массиву», Π½ΠΎ Π½Π΅ массиву. Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° массив, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ индСкс ΠΈ свойство Π΄Π»ΠΈΠ½Ρ‹ . Однако ΠΈ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ всСми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами.

Π‘ΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Function Π² справкС ΠΏΠΎ JavaScript для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Начиная с ECMAScript 2015, Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ .

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

Π’ JavaScript ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ undefined . Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ИмСнно это ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π‘Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Π΄ΠΎ ECMAScript 2015)

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ общая стратСгия установки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ присвоСнии значСния, Ссли ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹ undefined .

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ссли для b Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ undefined ΠΏΡ€ΠΈ вычислСнии a * b , Π° Π²Ρ‹Π·ΠΎΠ² ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π΅Ρ€Π½ΡƒΠ» Π±Ρ‹ NaN .Однако этому прСпятствуСт вторая строка Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

.
  функция multiply (a, b) {
  b = typeof b! == 'undefined'? Π±: 1;

  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ a * b;
}

ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ (5);
  
Π‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (послС ECMAScript 2015)

Π‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ручная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ большС Π½Π΅ трСбуСтся. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ 1 ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для b Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  функция умноТСния (a, b = 1) {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ a * b;
}

ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ (5);
  

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² справочникС.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Бинтаксис ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² позволяСт Π½Π°ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ массива.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для сбора Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. Π—Π°Ρ‚Π΅ΠΌ функция ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ ΠΈΡ… Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

  функция multiply (multiplier, ... theArgs) {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ theArgs.map (x => multiplier * x);
}

var arr = multiply (2, 1, 2, 3);
консоль.ΠΆΡƒΡ€Π½Π°Π» (ΠΎΠ±Ρ€);
  

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ стрСлочной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π°Π½Π΅Π΅, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΠΎ извСстноС ΠΊΠ°ΠΊ Тирная стрСлочная функция ) ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ синтаксис ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ выраТСниями ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнного this , arguments, super ΠΈΠ»ΠΈ new.target. Π‘Ρ‚Ρ€Π΅Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹. Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ сообщСниС Π² Π±Π»ΠΎΠ³Π΅ hacks.mozilla.org: Β«ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ES6: стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ».

На Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ повлияли Π΄Π²Π° Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°: Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ· это .

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

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ:

  var a = [
  Β«Π’ΠΎΠ΄ΠΎΡ€ΠΎΠ΄Β»,
  'Π“Π΅Π»ΠΈΠΉ',
  "Π›ΠΈΡ‚ΠΈΠΉ",
  'Π‘Π΅Ρ€ΠΈΠ»Π»ΠΈΠΉ'
];

var a2 = a.map (функция (ΠΈ) {return s.length;});

console.log (a2);

var a3 = a.map (s => s.length);

console.log (a3);
  

НСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ

this

Π”ΠΎ стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ каТдая новая функция опрСдСляла своС собствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ this (Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² случаС конструктора, Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² строгом Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ссли функция вызываСтся ΠΊΠ°ΠΊ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Β» ΠΈ Ρ‚. Π΄.). Π­Ρ‚ΠΎ оказалось Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ стиля программирования.

  function Person () {
  
  this.age = 0;

  setInterval (function growUp () {
    
    
    
    this.age ++;
  }, 1000);
}

var p = Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ();
  

Π’ ECMAScript 3/5 эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° исправлСна ​​путСм присвоСния значСния Π² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ.

  function Person () {
  var self = this;
                   
  self.age = 0;

  setInterval (function growUp () {
    
    
    сСбя.age ++;
  }, 1000);
}
  

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана связанная функция, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΎΡΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ growUp () .

БтрСлочная функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнного , это ; - это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ контСкста выполнСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ , это Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая пСрСдаСтся Π² setInterval , ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ , это Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  function Person () {
  это.возраст = 0;

  setInterval (() => {
    this.age ++;
  }, 1000);
}

var p = Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ();
  

JavaScript ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня:

eval ()

ΠœΠ΅Ρ‚ΠΎΠ΄ eval () ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ JavaScript, прСдставлСнный Π² Π²ΠΈΠ΄Π΅ строки.

Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ ()

ΠœΠ΅Ρ‚ΠΎΠ΄ uneval () создаСт строковоС прСдставлСниС исходного ΠΊΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Object .

isFinite ()

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ функция isFinite () опрСдСляСт, являСтся Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом. ΠŸΡ€ΠΈ нСобходимости ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сначала прСобразуСтся Π² число.

isNaN ()

Ѐункция isNaN () опрСдСляСт, Ρ€Π°Π²Π½ΠΎ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NaN ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ isNaN ΠΈΠΌΠ΅Π΅Ρ‚ интСрСсныС ΠΏΡ€Π°Π²ΠΈΠ»Π°; Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ .isNaN () , ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² ECMAScript 2015, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ typeof , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Not-A-Number.

parseFloat ()

Ѐункция parseFloat () Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ строковый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.

parseInt ()

Ѐункция parseInt () Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ строковый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ основания (основаниС Π² матСматичСских систСмах счислСния).

decodeURI ()

Ѐункция decodeURI () Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса (URI), Ρ€Π°Π½Π΅Π΅ созданный encodeURI ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

decodeURIComponent ()

ΠœΠ΅Ρ‚ΠΎΠ΄ decodeURIComponent () Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° рСсурса (URI), Ρ€Π°Π½Π΅Π΅ созданный encodeURIComponent ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ.

encodeURI ()

ΠœΠ΅Ρ‚ΠΎΠ΄ encodeURI () ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса (URI), замСняя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… символов ΠΎΠ΄Π½ΠΎΠΉ, двумя, трСмя ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символа UTF-8 (Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для символов, состоящих ΠΈΠ· Π΄Π²ΡƒΡ… «суррогатных» символов).

encodeURIComponent ()

ΠœΠ΅Ρ‚ΠΎΠ΄ encodeURIComponent () ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° рСсурса (URI), замСняя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… символов ΠΎΠ΄Π½ΠΎΠΉ, двумя, трСмя ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символа UTF-8 (Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для символов, состоящих ΠΈΠ· Π΄Π²ΡƒΡ… «суррогатных» символов).

ΠΏΠΎΠ±Π΅Π³ ()

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ escape () вычисляСт Π½ΠΎΠ²ΡƒΡŽ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ символы Π±Ρ‹Π»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ encodeURI ΠΈΠ»ΠΈ encodeURIComponent .

unescape ()

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ unescape () вычисляСт Π½ΠΎΠ²ΡƒΡŽ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ символом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° прСдставляСт.Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π²Ρ€ΠΎΠ΄Π΅ escape . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ unescape () устарСл, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ decodeURI () ΠΈΠ»ΠΈ decodeURIComponent .

Π’ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² JavaScript? | by Abhiburman

3 Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² JavaScript:

Набор ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ вычисляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π³Π΄Π΅ сущСствуСт очСвидная связь ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ .

F

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Бписок ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² скобки ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми .
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках , {...}.

Π­Ρ‚ΠΎ простая функция с ΠΈΠΌΠ΅Π½Π΅ΠΌ square , которая Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа.

  1. Ѐункция square ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ num .
  2. Ѐункция состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ num ), ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ сам Π½Π° сСбя.

НадСюсь, Π²Ρ‹ поняли, основная концСпция Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ.

  1. ИмСнованная функция
  2. Анонимная функция
  3. Π‘Ρ€Π°Π·Ρƒ вызываСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ . Он запускаСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΅Π³ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚.

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

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ :

АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅Π½ . Π˜Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ для запуска .

Π’Π° ΠΆΠ΅ функция, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ с Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ :

IIFE

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

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для , быстро Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ свойствС Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΈ часто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΊ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡΠΌ событий для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°.

НадСюсь, это Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ВсС Π² JavaScript происходит Π² функциях.

Ѐункция - это самодостаточный Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² любоС врСмя.

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript - это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² , особый Π²ΠΈΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² .Π˜Ρ… супСрсила Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ.

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

Бинтаксис

НачнСм со «старого» синтаксиса Π΄ΠΎ ES6 / ES2015. Π’ΠΎΡ‚ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ :

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ foo ΠΈ bar ΠΊΠ°ΠΊ случайных ΠΈΠΌΠ΅Π½ . Π’Π²Π΅Π΄ΠΈΡ‚Π΅ любоС имя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ….

  function dosomething (foo) {
  // сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
  

(Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π² сообщСниях ES6 / ES2015 world, обозначаСтся ΠΊΠ°ΠΊ обычная функция )

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ (это называСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ):

  const dosomething = function (foo) {
  // сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
  

ВыраТСния ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΡ…ΠΎΠΆΠΈ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с трассировкой Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² стСка, которая ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки - ΠΎΠ½Π° ​​содСрТит имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  const dosomething = function dosomething (foo) {
  // сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
  

ES6 / ES2015 прСдставил стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со встроСнными функциями Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:

  const dosomething = foo => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
  

Π‘Ρ‚Ρ€Π΅Π»ΠΎΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π±ΠΎΠ»Π΅Π΅ слоТная Ρ‚Π΅ΠΌΠ°.

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

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

  const dosomething = () => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}

const dosomethingElse = foo => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}

const dosomethingElseAgain = (foo, bar) => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
  

Начиная с ES6 / ES2015, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

  const dosomething = (foo = 1, bar = 'hey') => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
  

Π­Ρ‚ΠΎ позволяСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· заполнСния всСх ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

  Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ (3)
сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ()
  

ES2018 прСдставил ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ запятыС для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство ошибок ΠΈΠ·-Π·Π° отсутствия запятых ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ. пСрСмСщая послСднюю Π² сСрСдину):

  const dosomething = (foo = 1, bar = 'hey') => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}

dosomething (2, 'Ρ…ΠΎ!')
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС свои Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² массив ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ распространСния ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  const dosomething = (foo = 1, bar = 'hey') => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
}
const args = [2, 'Ρ…ΠΎ!']
Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ (... Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)
  

ΠŸΡ€ΠΈ большом количСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ порядка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, дСструктуризация позволяСт ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

  const dosomething = ({foo = 1, bar = 'hey'}) => {
  //сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ
  console.log (foo) // 2
  console.log (bar) // 'Ρ…ΠΎ!'
}
const args = {foo: 2, bar: 'ho!' }
Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)
  

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

КаТдая функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - undefined .

Π›ΡŽΠ±Π°Ρ функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΅Π΅ строки ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚ΠΎΠΊ выполнСния Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово return .

Когда JavaScript встрСчаСт это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΎΠ½ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ сторонС.

Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ возвращаСтся ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  const dosomething = () => {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "тСст"
}
const result = dosomething () // Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ === 'test'
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

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

ИспользованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

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

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

  const dosomething = () => {
  const dosomethingelse = () => {
    // здСсь ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄
  }
  dosomethingelse ()
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "тСст"
}
  

ВлоТСнная функция ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ΠΈΠ·Π²Π½Π΅.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ dosomethingelse () нСдоступно ΠΈΠ·Π²Π½Π΅ dosomething () :

  const dosomething = () => {
  const dosomethingelse = () => {
    // здСсь ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄
  }
  dosomethingelse ()
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "тСст"
}

dosomethingelse () // ReferenceError: dosomethingelse Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ
  

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ инкапсулированный ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π² своСй области внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

Π£ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 2 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ…:

  const bark = () => {
  const dosomethingelse = () => {
    // здСсь ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄
  }
  dosomethingelse ()
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "тСст"
}


const sleep = () => {
  const dosomethingelse = () => {
    // здСсь ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄
  }
  dosomethingelse ()
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "тСст"
}
  

ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ пСрСзаписи ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

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

ΠŸΡ€ΠΈ использовании Π² качСствС свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ:

  const car = {
  ΠΌΠ°Ρ€ΠΊΠ°: 'Ford',
  модСль: 'Fiesta',
  start: function () {
    console.log (`Начато`)
  }
}

car.start ()
  

это Π² стрСлочных функциях

БущСствуСт Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ функциями ΠΏΡ€ΠΈ использовании Π² качСствС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Рассмотрим этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  const car = {
  ΠΌΠ°Ρ€ΠΊΠ°: 'Ford',
  модСль: 'Fiesta',
  start: function () {
    консоль.log (`Π—Π°ΠΏΡƒΡ‰Π΅Π½ $ {this.brand} $ {this.model}`)
  },
  стоп: () => {
    console.log (`ΠžΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ $ {this.brand} $ {this.model}`)
  }
}
  

ΠœΠ΅Ρ‚ΠΎΠ΄ stop () Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ отличаСтся Π² Π΄Π²ΡƒΡ… стилях объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. этот Π² стрСлочной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ относится ΠΊ контСксту Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΊΠ½Π° :

это , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ хоста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ()

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ подходят для использования для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ конструкторов (конструкторы стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ фактичСски Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ TypeError ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅).

IIFE - это функция, которая выполняСтся сразу послС объявлСния:

 ; (функция dosomething () {
  console.log ('Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ')
}) ()
  

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

  const something = (function dosomething () {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ
}) ()
  

Они ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ послС Π΅Π΅ опрСдСлСния.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠΉ пост, посвящСнный ΠΈΠΌ.

ПодъСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

JavaScript ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ вашСго ΠΊΠΎΠ΄Π° пСрСупорядочиваСт Π΅Π³ΠΎ Π² соотвСтствии с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² частности, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСй области видимости. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

  Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ()
function dosomething () {
  console.log ('Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сдСлал')
}
  

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ JavaScript ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ вмСстС со всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями, находящимися Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области:

  function dosomething () {
  console.log ('Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сдСлал')
}
сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ()
  

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

  Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ()
const dosomething = function dosomething () {
  console.log ('Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сдСлал')
}
  

НС ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅:

  const dosomething
сдСлай Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ()
dosomething = function dosomething () {
  console.log ('Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сдСлал')
}
  

Π’ΠΎ ΠΆΠ΅ самоС происходит с объявлСниями let .ОбъявлСния var Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ошибкой:

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ объявлСния var ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с undefined Π² качСствС значСния, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ const ΠΈ let ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ, Π½ΠΎ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ПониманиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript | Zell Liew

8 ноября 2017 Π³.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΆΠΈΠ²Π΅Ρ‚Π΅ Π² Π΄Π΅Ρ€Π΅Π²Π½Π΅ Π±Π΅Π· Π²ΠΎΠ΄ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΎΠ΄Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΎΠ΄Ρ‹, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ пустоС Π²Π΅Π΄Ρ€ΠΎ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ»ΠΎΠ΄Ρ†Ρƒ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ Π΄Π΅Ρ€Π΅Π²Π½ΠΈ, Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΎΠ΄Ρƒ ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ΄Ρ†Π° ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π΄ΠΎΠΌΠΎΠΉ.

Из ΠΊΠΎΠ»ΠΎΠ΄Ρ†Π° Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Π²ΠΎΠ΄Ρƒ нСсколько Ρ€Π°Π· Π² дСнь. Π£Ρ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ: Β«Π― Π²ΠΎΠ·ΡŒΠΌΡƒ пустоС Π²Π΅Π΄Ρ€ΠΎ, ΠΏΠΎΠΉΠ΄Ρƒ ΠΊ ΠΊΠΎΠ»ΠΎΠ΄Ρ†Ρƒ, Π½Π°Π±Π΅Ρ€Ρƒ Π²ΠΎΠ΄Ρ‹ ΠΈ принСсу Π΄ΠΎΠΌΠΎΠΉΒ» ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Β«Ρ‡Π΅Ρ€ΠΏΠ°Ρ‚ΡŒ Π²ΠΎΠ΄ΡƒΒ».

И ΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³, Π²Ρ‹ создали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

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

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

Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса:

  function functionName (parameters) {
  // Π”Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ здСсь
}
  

функция - это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сообщаСт JavaScript, Ρ‡Ρ‚ΠΎ Π²Ρ‹ опрСдСляСтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

functionName - это имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ drawWater .

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ, Ссли ΠΎΠ½ΠΎ слСдуСт Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

  1. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ слово
  2. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π±ΡƒΠΊΠ², Ρ†ΠΈΡ„Ρ€ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠ² подчСркивания (0-9, a-z, A-Z, _ ).
  3. НС ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с числа.
  4. Π­Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ для своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Им ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния ΠΏΡ€ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ объявили свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ( ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ), написав имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт скобка () .

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ объявлСна ​​и ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция sayHello .

  // ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
function sayHello () {
  console.log ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!')
}

// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
скаТи ΠΏΡ€ΠΈΠ²Π΅Ρ‚()
  
ОбъявлСниС ΠΈ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sayHello

ΠžΡ‚ΡΡ‚ΡƒΠΏ

Код Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° (всС, Ρ‡Ρ‚ΠΎ находится Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках {} ) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ отступ Π²ΠΏΡ€Π°Π²ΠΎ. Π­Ρ‚ΠΎ ваТная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ позволяСт сразу ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ консоль .log ('Hello world') являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ sayHello .

  function sayHello () {
  // Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ console.log являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ sayHello
  console.log ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!')
}
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ отступ с двумя ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиши табуляции. НСкоторыС люди ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ. И Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π² порядкС, Ссли Π²Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

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

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π­Ρ‚ΠΎ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… , Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ для своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

  function functionName (param1, param2, param3) {
  // Π”Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ здСсь
}
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния вашим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ значСния (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ), записывая ΠΈΡ… ΠΊΠ°ΠΊ значСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми, Π² скобках

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

  имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ('Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚1', 'Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚2')
  

Поясним Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ sayName , которая рСгистрируСт имя ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Ѐункция выглядит Ρ‚Π°ΠΊ:

  function sayName (firstName, lastName) {
  console.log ('firstName is' + firstName)
  console.log ('lastName is' + lastName)
}
  

Π—Π΅Π»Π» - ΠΌΠΎΠ΅ имя, Π›ΡŒΡŽ - моя фамилия. Π§Ρ‚ΠΎΠ±Ρ‹ функция Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, я ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽ свой Zell Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Liew Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

  sayName ('Zell', 'Liew')
// firstName - Zell
// lastName - Liew
  

Если Π²Ρ‹ объявили ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π΅ΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, вашим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ undefined .

  sayName ()
// firstName Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ
// lastName Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ
  

ЗаявлСниС ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, состоящий ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова return ΠΈ значСния:

  function functionName () {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ "ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅"
}
  

Когда JavaScript Π²ΠΈΠ΄ΠΈΡ‚ этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, ΠΎΠ½ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Β» (ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

  function get2 () {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 2
  консоль.log ('blah') // Π­Ρ‚ΠΎ Π½Π΅ выполняСтся
}

const Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ = get2 ()
console.log (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹) // 2
// ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ "Π±Π»Π°" Π² консоли
  

Если Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, JavaScript ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ значСния.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Javascript ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, String, Numbers, Booleans) ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, массивы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) Π² качСствС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ†Π΅Π½ΠΊΠΈ .

ΠŸΠΎΡ‚ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌΠΈ для понимания Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ.Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ снова ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. На этот Ρ€Π°Π· ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ поэтапно.

Π’ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ:

  function add2 (num) {
  return num + 2
}

константноС число = add2 (8)
console.log (число) // 10
  

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ смоТСтС Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС JavaScript Π²ΠΈΠ΄ΠΈΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово function ΠΈ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция называСтся add2 .

Π—Π΄Π΅ΡΡŒ пропускаСтся ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ функция Π΅Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

JavaScript Π²ΠΈΠ΄ΠΈΡ‚ add2 ΠΈ пропускаСт Π΅Π³ΠΎ

Π—Π°Ρ‚Π΅ΠΌ JavaScript Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ number ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ Π΅Π΅ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ add2 (8) .

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ правая Ρ‡Π°ΡΡ‚ΡŒ (RHS) прСдставляСт собой Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅), JavaScript Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ add2 (8) , ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ смоТСт ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ number . Π—Π΄Π΅ΡΡŒ ΠΎΠ½ устанавливаСт для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° num Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 8 , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ 8 Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ add2 (8) .

JavaScript выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ add2

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ add2 JavaScript Π²ΠΈΠ΄ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ num + 2 . Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, поэтому ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ число Ρ€Π°Π²Π½ΠΎ 8, число + 2 Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ 10.

JavaScript ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ num + 2 ΠΊΠ°ΠΊ 10

ПослС вычислСния num + 2 JavaScript Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Он замСняСт Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π˜Ρ‚Π°ΠΊ, add2 (8) становится 10.

JavaScript замСняСт add2 (8) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ 10

НаконСц, послС ΠΎΡ†Π΅Π½ΠΊΠΈ RHS JavaScript создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ присваиваСт Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ПодъСмник

Когда Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с объявлСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅), ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ вашСй области видимости. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠ΄Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹.

  function sayHello () {
  консоль.log ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!')
}
скаТи ΠΏΡ€ΠΈΠ²Π΅Ρ‚()
  
  // Π­Ρ‚ΠΎ автоматичСски прСобразуСтся Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄
скаТи ΠΏΡ€ΠΈΠ²Π΅Ρ‚()
function sayHello () {
  console.log ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!')
}
  

ПодъСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ JavaScript измСняСт порядок вашСго ΠΊΠΎΠ΄Π°. Π― Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… использованиСм. НС ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° подъСмник.

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ (анонимная функция).

  const sayHello = function () {
  console.log ('Π­Ρ‚ΠΎ объявлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ!')
}
  

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ автоматичСски Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ области видимости.

  sayHello () // Ошибка sayHello Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°
const sayHello = function () {
  console.log ('это функция!')
}
  

На этом этапС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом, Π²Π°ΠΆΠ½Ρ‹ Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния.Π­Ρ‚ΠΎ частый вопрос. Π—Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ выраТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ссли Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с синтаксисом объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

Они Π²Π°ΠΆΠ½Ρ‹. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΏΠΎΡ‡Π΅ΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅

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

Π’Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, добавляя () Π² ΠΊΠΎΠ½Π΅Ρ† ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.Когда Π²Ρ‹ это сдСлаСтС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

КаТдая функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Β» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° подъСм ΠΏΡ€ΠΈ написании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ВсСгда заявляйтС ΠΎ Π½ΠΈΡ… Π·Π°Ρ€Π°Π½Π΅Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ прСдставляСт собой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΡ€ΠΎΠΊΠ° ΠΈΠ· курса Learn JavaScript - курса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ JavaScript Π΄ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ…, практичСских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с нуля. Π’Π°ΠΌ понравится Π£Ρ‡ΠΈΡ‚ΡŒ JavaScript, Ссли эта ΡΡ‚Π°Ρ‚ΡŒΡ окаТСтся для вас ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ.Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ, я ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ вас ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Learn JavaScript.

Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ, расскаТитС ΠΎ Π½Π΅ΠΉ Π΄Ρ€ΡƒΠ³Ρƒ! ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ этим Π² Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅. Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ, я Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½, Ссли Π²Ρ‹ смоТСтС ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° GitHub. Бпасибо!

Components and Props - React

Components ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π½Π° нСзависимыС, ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅ части ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚Π° страница Π΄Π°Π΅Ρ‚ прСдставлСниС ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ справку ΠΏΠΎ API ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² здСсь.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ функциям JavaScript. Они ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°ΠΌΠΈΒ») ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ элСмСнты React, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° экранС.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ - Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ JavaScript:

  функция Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚) {
  return  

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {props.name}

; }

Π­Ρ‚Π° функция являСтся допустимым ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ React, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ СдинствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Β«propsΒ» (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ свойства) с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт React.ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Β«Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями JavaScript.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс ES6 для опрСдСлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  class Welcome extends React.Component {
  ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ() {
    return  

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {this.props.name}

; } }

Π”Π²Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° эквивалСнтны с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния React.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Function ΠΈ Class ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ обсудим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

Визуализация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

РаньшС ΠΌΡ‹ встрСчали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты React, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Π΅Π³ΠΈ DOM:

Однако элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

  const element = <Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ name = "Π‘Π°Ρ€Π°" />;  

Когда React Π²ΠΈΠ΄ΠΈΡ‚ элСмСнт, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ JSX ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты этому ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠΌΒ».

НапримСр, этот ΠΊΠΎΠ΄ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° страницС Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π‘Π°Ρ€Π°Β»:

  function Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹) {return  

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹.имя}

; } const element = ; ReactDOM.render ( элСмСнт, document.getElementById ('ΠΊΠΎΡ€Π΅Π½ΡŒ') );

ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° CodePen

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

  1. ΠœΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ReactDOM.render () с элСмСнтом .
  2. React Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Welcome с {name: 'Sara'} Π² качСствС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°.
  3. Наш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Welcome Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° элСмСнт

    Hello, Sara

    .
  4. React DOM эффСктивно обновляСт DOM для соотвСтствия

    Hello, Sara

    .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ВсСгда Π½Π°Ρ‡ΠΈΠ½Π°ΠΉΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹.

React рассматриваСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ со строчных Π±ΡƒΠΊΠ², ΠΊΠ°ΠΊ Ρ‚Π΅Π³ΠΈ DOM. НапримСр,

прСдставляСт Ρ‚Π΅Π³ HTML div, Π½ΠΎ прСдставляСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Welcome находился Π² области дСйствия.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… этого соглашСния, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ JSX In Depth.

БоставныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² своих Π²Ρ‹Π²ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для любого уровня Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Кнопка, Ρ„ΠΎΡ€ΠΌΠ°, Π΄ΠΈΠ°Π»ΠΎΠ³, экран: Π² прилоТСниях React всС это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выраТаСтся Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ App , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Welcome :

  функция Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚) {
  return  

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {props.name}

; } function App () { Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (
); } ReactDOM.ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ( <ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ />, document.getElementById ('ΠΊΠΎΡ€Π΅Π½ΡŒ') );

ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° CodePen

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ прилоТСния React ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ App Π½Π° самом Π²Π΅Ρ€Ρ…Ρƒ. Однако, Ссли Π²Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ React Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ снизу Π²Π²Π΅Ρ€Ρ… с нСбольшого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Button , ΠΈ постСпСнно ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ прСдставлСний.

НС Π±ΠΎΠΉΡ‚Π΅ΡΡŒ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅.

НапримСр, рассмотрим этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Comment :

  ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹) {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (
    
{props.author.name}
{props.author.name}
{props.text}
{formatDate (props.date)}
); }

ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° CodePen

Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€Π° (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚), тСкст (строка) ΠΈ Π΄Π°Ρ‚Π° (Π΄Π°Ρ‚Π°) Π² качСствС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° ΠΈ описываСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π° Π²Π΅Π±-сайтС ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ·-Π·Π° всСй влоТСнности, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΅Π³ΠΎ части. Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ ΠΈΠ· Π½Π΅Π³ΠΎ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ Аватар :

  функция Аватар (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚) {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (
    {props.user.name});
}  

Аватар Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ отобраТаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ коммСнтария .Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Π΄Π°Π»ΠΈ Π΅Π³ΠΎ ΠΎΠΏΠΎΡ€Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π΅ имя: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ , Π° Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ .

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния самого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π° Π½Π΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ контСкста, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ:

  ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹) {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (
    
{Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚.имя Π°Π²Ρ‚ΠΎΡ€Π°}
{props.text}
{formatDate (props.date)}
); }

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ UserInfo , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Avatar рядом с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

  функция UserInfo (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹) {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (
    
{props.user.name}
); }

Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π΅Ρ‰Π΅ большС ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ :

  ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹) {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (
    
{props.text}
{formatDate (props.date)}
); }

ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° CodePen

ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ тяТСлой Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ, Π½ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² окупаСтся Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… прилоТСниях.Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ практичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Ρ‡Π°ΡΡ‚ΡŒ вашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько Ρ€Π°Π· ( Button , Panel , Avatar ) ΠΈΠ»ΠΈ достаточно слоТна сама ΠΏΠΎ сСбС ( App , FeedStory , Comment ), это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ для выдСлСния Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ класс, ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свои собствСнныС свойства. Рассмотрим эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ суммы :

  function sum (a, b) {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ a + b;
}  

Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «чистыми», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свои Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Напротив, эта функция нСчистая, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° измСняСт свой собствСнный Π²Π²ΠΎΠ΄:

  функция Π²Ρ‹Π²ΠΎΠ΄Π° (счСт, сумма) {
  account.total - = сумма;
}  

React довольно Π³ΠΈΠ±ΠΊΠΈΠΉ, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ строгоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

ВсС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ React Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ своим свойствам.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ ΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ прСдставим Π½ΠΎΠ²ΠΎΠ΅ понятиС «состояниС». БостояниС позволяСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ React ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свой Π²Ρ‹Π²ΠΎΠ΄ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, сСтСвыС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΅Ρ‰Π΅, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ этого ΠΏΡ€Π°Π²ΠΈΠ»Π°.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΏΠΎ функциям Javascript 2021

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

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

Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ функциях, ΠΊΠ°ΠΊ ΠΎ заклинаниях волшСбника. Когда волшСбник Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сущСство, ΠΎΠ½ смотрит Π² свою ΠΊΠ½ΠΈΠ³Ρƒ Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠΉ ΠΈ произносит Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅.Другая аналогия - ΠΏΠΎΠ²Π°Ρ€ со своСй ΠΊΠ½ΠΈΠ³ΠΎΠΉ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ².

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠ²Π°Ρ€ΠΎΠΌ ΠΈΠ»ΠΈ волшСбником, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ своС Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅ / Ρ€Π΅Ρ†Π΅ΠΏΡ‚, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ смоТСтС Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, это называСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ вашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

  function wizardSpell () {
    // Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅
}
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ - это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… способов Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нашС Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅ / Ρ€Π΅Ρ†Π΅ΠΏΡ‚, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ наша функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² любоС врСмя, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ.

  wizardSpell ()
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ произнСсти Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΡ‹ пишСм имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² скобках послС Π½Π΅Π³ΠΎ. (Если скобок Π½Π΅Ρ‚, Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° просто ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° саму Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ).

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

  function returnOne () {
    // эта функция даст Π²Π°ΠΌ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΠ΄ΠΈΠ½
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 1
}

// записываСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
консоль.log ("Π’Ρ‹Π·ΠΎΠ²:", returnOne ())
// записываСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
console.log (Β«Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ», returnOne)
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

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

Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ синтаксис Π±Ρ‹Π» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… основных способов опрСдСлСния нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ - это объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ качСствС напоминания ...

  // ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
function someFunction () {

}

// Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ
someFunction ()
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

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

  // Π²Ρ‹Π·ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ·ΠΆΠ΅
someFunction ()

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
function someFunction () {

}
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

Π­Ρ‚ΠΎ, бСзусловно, Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ, ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π² глобальноС пространство, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, поэтому Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ Javascript ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ Π² сторону Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎ прСимущСство, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΊΠ»Π°ΡΡΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² javascript, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² массивах ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ функциям

  • Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° функциями

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вмСсто объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выраТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится функция.ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ, поэтому Π²Ρ‹Π·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ послС опрСдСлСния ΠΈ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ загрязнСния памяти объявлСниями Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Бпособы написания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
  1. ИмСнованная функция, хранящаяся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
  // опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
const someFunction = function funcName () {

}

// Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
someFunction ()
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
  1. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с использованиСм Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ) с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  // опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
const someFunction = function () {

}

// Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
someFunction ()
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
  1. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с использованиСм Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ) с использованиСм стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
  // опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
const someFunction = () => {

}

// Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
someFunction ()
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

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

 
// сыр ΠΈ Ρ…Π»Π΅Π± ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ для Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ нас Π΅Ρ‰Π΅ Π½Π΅Ρ‚
const someFunction = function (сыр, Ρ…Π»Π΅Π±) {
  console.log (сыр)
  console.log (Ρ…Π»Π΅Π±)
}

// ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ строку Β«goudaΒ» Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сохраняСтся Π² сырС ΠΏΡ€ΠΈ запускС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Β«Ρ€ΠΎΠΆΡŒΒ» Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сохраняСтся ΠΊΠ°ΠΊ Ρ…Π»Π΅Π± Π²ΠΎ врСмя выполнСния.someFunction (Β«Π³Π°ΡƒΠ΄Π°Β», Β«Ρ€ΠΎΠΆΡŒΒ»)
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

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

Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ ΠΎ Π·Π°Π΄Π°Ρ‡Π΅, Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π½Π° Π΄Π²ΠΎΡ€Π΅Ρ†ΠΊΠΎΠ³ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΎΡ€Π΅Ρ†ΠΊΠΈΠΉ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈ приносит ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π’ ΠΌΠΈΡ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ это называСтся Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ...

  • ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
  • ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² выраТСниях
  • ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΠΌ функциям (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ)

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ

  // функция, которая рСгистрируСт вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ Π΄Π²ΠΎΡ€Π΅Ρ†ΠΊΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±ΡƒΡ‚Ρ‹Π»ΠΊΡƒ Π²ΠΈΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ просили, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ приносит Π΅Π΅ Π²Π°ΠΌ.const noReturn = () => {
  console.log ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€")
}

const result1 = noReturn () // Π½Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния, поэтому пСрСмСнная Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚

console.log (result1) // undefined записываСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния

//////////////////////////////////
//////////////////////////////////

// функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, это ΠΊΠ°ΠΊ Π²ΠΈΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ приносят ΠΈ ΠΊΠ»Π°Π΄ΡƒΡ‚ Π²Π°ΠΌ Π² Ρ€ΡƒΠΊΠΈ
const returnSomething = () => {
  return "Hello World"
}

const result2 = returnSomething () // пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "Hello World"

консоль.log (result2) // это Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ "Hello World"
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

ΠšΡ€ΡƒΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€ΡŽΠΊΠΈ

ЗначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
  // ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ 4 ΠΈ 6 ΠΊΠ°ΠΊ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для x ΠΈ y
const someFunction = (x = 4, y = 6) => {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ x + y
}

console.log (someFunction ()) // ΠΆΡƒΡ€Π½Π°Π» 10
console.log (someFunction (2,2)) // ΠΆΡƒΡ€Π½Π°Π» 4
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ двумя способами.Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово function, Π΅ΡΡ‚ΡŒ магичСскиС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ повторяСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for-of, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ распространСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² массив.

  const someFunction = function () {
  // рСгистрируСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
  console.log (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)
  // ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
  for (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) {
    console.log (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚)
  }
  // ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ массив
  const argArray = [... Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹]
}

someFunction (1,2,3,4,5,6,7)
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

Π‘ΠΎΠ»Π΅Π΅ явный способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со всСми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, - это использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° rest для Π·Π°Ρ…Π²Π°Ρ‚Π° всСх ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² массивС.

  // функция, которая складываСт всС числа
const someFunction = (x, y, ... args) => {

  // добавляСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
  ΠΏΡƒΡΡ‚ΡŒ сумма = x + y

  // добавляСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
  for (количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) {
    сумма + = число
  }

  сумма Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°

}

console.log (someFunction (1,2,3,4,5,6,7,8))

  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅

КаТдая функция ΠΈΠΌΠ΅Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, ΠΈ Ссли Π²Ρ‹ опрСдСляСтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ области Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсным способом скрытия Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ React Hooks. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

 
const parentFunction = (startValue) => {
  // созданиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
  константноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  // опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  const getValue = () => {Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅}
  // опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  const setValue = (newValue) => {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = newValue}
  // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² массивС
  return [getValue, setValue]
}

// дСструктурируСм Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
const [getValue, setValue] = parentFunction (1)
консоль.log (getValue ()) // Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 1
setValue (2)
console.log (getValue ()) // Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 2
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ getValue ΠΈ setValue ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ области parentFunction Π²Π½Π΅ Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅.

ΠšΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся нСсколько Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΊΠ°Ρ€Ρ€ΠΈ для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

 
const addAndMultiply = (x, y, z) => {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ x + y * z
}

консоль.log (addAndMultiply (2,3,4)) // 2 + 3 * 4 = 20

  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

Учитывая, Ρ‡Ρ‚ΠΎ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ достаточно прост, Π΅Π³ΠΎ, вСроятно, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ...

 
const addAndMultiply = (x) => (y) => (z) => {
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ x + y + z
}

// Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ
console.log (addAndMultiply (2) (3) (4)) // 20

// дСлаСм шаг за шагом

const add = addAndMultiply (2)
const ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ = Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (3)
const Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ (4)
консоль.log (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚) // 20
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
Π Π°Π·Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ массив, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ.

  // Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
const myFunction = ({имя, возраст}) => {
  console.log (имя)
  console.log (возраст)
}

myFunction ({имя: "АлСкс ΠœΠ΅Ρ€ΡΠ΅Π΄", возраст: 35})
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
  // Для массивов
const myFunction = ([имя, возраст]) => {
  консоль.ΠΆΡƒΡ€Π½Π°Π» (имя)
  console.log (возраст)
}

myFunction (["АлСкс ΠœΠ΅Ρ€ΡΠ΅Π΄", 35])
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°
Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стрСлки
  • Если Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, скобки Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹
  • Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ экспрСсса, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово return
  • Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки
  const quickFunction = x => x + 1

const longExpression = Ρƒ => (Ρƒ + Ρƒ * Ρƒ - Ρƒ * Ρƒ)
  
Π’ΠΎΠΉΡ‚ΠΈ Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌΠ’Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ созданию Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

  • Ѐункция Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ alter Π²Π½Π΅ своСй области дСйствия
  • ВсС, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π½Π΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
  • Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡƒΡΡ‚ΡŒ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию с ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ вмСсто измСнСния исходных
  • Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, это позволяСт Π²Π°ΠΌ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π±Π΅Π· особого Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.
  • Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ слоТныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° мноТСство Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ… (ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ ΠΊΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ)
  • По ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΡΠ²ΠΎΠΈΡ‚Π΅ΡΡŒ с написаниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ вычислСнныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ процСссы.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript, ΠΎΠ±ΡŠΡΡΠ½Π΅Π½Π½Ρ‹Π΅ ΠΏΡƒΡ‚Π΅ΠΌ создания Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° [Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ объяснСниС]

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² JavaScript

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ - ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… частСй любого языка программирования. Но Ссли JavaScript - ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ язык, всС ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ усилий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊ ΠΈΡ… синтаксису ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π²Ρ…ΠΎΠ΄Π°ΠΌ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°ΠΌ.

Как Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, сайт CodeAnalogies посвящСн ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ с использованиСм Π°Π½Π°Π»ΠΎΠ³ΠΈΠΉ.Но Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° общая аналогия, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ ΠΈΠ· ΠΏΠΎΠ²Π°Ρ€Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ!

Π˜Ρ‚Π°ΠΊ, я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ эту аналогию ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ясной.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это руководство, Π²Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² JavaScript. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΌΠΎΠΈΠΌ руководством ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ здСсь, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ.

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎΠ± ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ приготовлСния ΠΏΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρƒ.ИспользованиС Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ:

  1. Π’Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²
  2. Π’Ρ‹ выполняСтС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ с использованиСм этих ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²
  3. По ΠΈΡ‚ΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€

Ѐункция - это Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ снова ΠΈ снова выполняСт ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ дСйствий с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ².

Π­Ρ‚ΠΈ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… Π½Π° схСмС Π½ΠΈΠΆΠ΅.

НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Π²Π°ΠΌ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм скриптС. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ значСния. ВмСсто этого ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΆΠ΅ сущСствуСт Π² вашСм скриптС. Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом, ΠΊΠ°ΠΊ ΠΎ Π½Π°Ρ€Π΅Π·ΠΊΠ΅ Π»ΡƒΠΊΠ°. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Β«Π½ΠΎΠ²ΠΎΠ³ΠΎΒ» ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, просто Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π² Π½ΠΎΠ²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ схСму Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ объявляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ makeSandwich.Он Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΡ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ приготовлСния Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1 - ΠšΠΈΠΏΡΡ‰Π°Ρ Π²ΠΎΠ΄Π°

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

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ смысл, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²ΠΎΠ΄Π°, ΠΈ Π³ΠΎΡ€ΡˆΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ числами, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ паста Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ строкой.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ кипятка. Π― знаю, Ρ‡Ρ‚ΠΎ это новаторскиС Π²Π΅Ρ‰ΠΈ. Но Ρƒ нас Ρ‚ΠΎΠ»ΡŒΠΊΠΎ заявили Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ΄Π° Π·Π°ΠΊΠΈΠΏΠ΅Π»Π°. Π­Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Он строго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠœΡ‹ собираСмся ΡΠ²Π°Ρ€ΠΈΡ‚ΡŒ спагСтти Π² 30 ΡƒΠ½Ρ†ΠΈΠΉ Π²ΠΎΠ΄Ρ‹ Π² ΠΊΠ°ΡΡ‚Ρ€ΡŽΠ»Π΅ Π½Π° 120 ΡƒΠ½Ρ†ΠΈΠΉ. НавСдитС ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² послСднСй строкС ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ boilWater, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ значСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Β«ΠœΡ‹ собираСмся Π²ΡΠΊΠΈΠΏΡΡ‚ΠΈΡ‚ΡŒ 30 ΡƒΠ½Ρ†ΠΈΠΉ Π²ΠΎΠ΄Ρ‹ со спагСтти Π² ΠΊΠ°ΡΡ‚Ρ€ΡŽΠ»Π΅ Π½Π° 120 ΡƒΠ½Ρ†ΠΈΠΉΒ»

Одно нСбольшоС ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ здСсь Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½? ΠœΡ‹ Π²Π²Π΅Π»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ . АргумСнт - это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ .

Π’ этом Ρ€Π°Π·Π½ΠΈΡ†Π° - эти Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ. Π’ΠΎΠ΄Ρ‹. ΠœΠ°ΠΊΠ°Ρ€ΠΎΠ½Π½Ρ‹Π΅ издСлия. Π“ΠΎΡ€ΡˆΠΎΠΊ. Но объСм Π²ΠΎΠ΄Ρ‹? Π’ΠΈΠΏ ΠΌΠ°ΠΊΠ°Ρ€ΠΎΠ½? Π Π°Π·ΠΌΠ΅Ρ€ Π³ΠΎΡ€ΡˆΠΊΠ°? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 - ΠŸΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄Π°

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° boilWater, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ , Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ выводят ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, массив, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Они Π½Π΅ просто ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² вашСм скриптС.

ΠœΡ‹ собираСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ makeSandiwch, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° - мясо, ΠΎΠ²ΠΎΡ‰ ΠΈ Ρ…Π»Π΅Π±. Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ строкой. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто. Π’ΠΎΡ‚ эта функция.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ собираСмся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с boilWater. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° новая пСрСмСнная для хранСния послСднСго Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ нас Π΅ΡΡ‚ΡŒ послС строки Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°. ΠœΡ‹ Π½Π°Π·ΠΎΠ²Π΅ΠΌ эту Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρƒ Бэндвич (Π΅ΡΡ‚ΡŒ подсказка насчСт ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²)

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

НавСдитС ΠΈΠ»ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ значСния.

Когда Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с прСдпослСднСй строки, Π³Π΄Π΅ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ makeSandwich ΠΈ сохраняСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² hamSandwich.

Π£Π²ΠΈΠ΄Π΅Π² Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π²Π΅Ρ€Ρ…Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ фактичСскиС значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ.

НаконСц, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ эти Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚-Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄. Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°.

Π’Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ это

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ руководствами CodeAnalogies ΠΏΠΎ HTML, CSS, JavaScript, Ссли Π²Π°ΠΌ нравится этот ΡΡ‚ΠΈΠ»ΡŒ прСподавания.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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