…Вам нужно будет это знать… по крайней мере
1. Определение и вызов функции
JS-функции могут быть объявлены несколькими способами:
Объявление функции
Заявленные функции выполняются не сразу. Они «сохраняются для последующего использования» и будут выполняться позже, когда они вызываются (вызываются)
Выражение функции
Функциональные выражения определяют, что именованная или анонимная функция может быть сохранена в переменной.
Стрелочные функции
Выражение функции со стрелкой – это более короткий синтаксис для написания выражений функций. Стрелочные функции не создают собственное значение
this
.
Конструктор функций
Функции также могут быть определены с помощью встроенного конструктора функций JavaScript с именем
Function()
.
Функция самовызова
Самовызывающееся выражение вызывается (запускается) автоматически, без вызова. Функциональные выражения будут выполняться автоматически, если за выражением следует символ ().
Вызовы функций
Вызов функции — это выполнение кода, создающего тело функции, или просто вызов функции.
Простой пример вызова функции:
Более продвинутый пример — IIFE:
Ключом к пониманию ключевого слова this
является четкое представление о вызове функции и о том, как он влияет на контекст.
В JavaScript this
— это текущий контекст выполнения функции.
JavaScript имеет 4 типа вызова функций:
- Вызов функции как Function:
alert('Hello World!')
- Вызов функции как метода :
console.log('Hello World!')
- Вызов функции с помощью конструктора функций:
new RegExp('\\d')
- Косвенный вызов:
alert.call(undefined, 'Hello World!')
…как функция
this
— это глобальный объект в вызове функции.
Но не в строгом режиме
…как метод
this
– это объект, которому принадлежит метод при вызове метода.
Вызов конструктора
Или используя синтаксис класса
this
— это недавно созданный объект в вызове конструктора.
Косвенный вызов
this
– это первый аргумент .call()
или .apply()
в косвенном вызове.
& в связанной функции
this
– это первый аргумент .bind()
при вызове связанной функции.
…также в функции стрелки
this
– это окружающий контекст, в котором определена стрелочная функция.
Вы можете прочитать больше о функциях и их вызовах здесь: https://dmitripavlutin.com/gentle-explanation-of-this-in-javascript/