Простой вызов функции — самый частый сценарий: набрал имя, скобки, аргументы, точка с запятой. Никаких точек, никаких new, никаких .call(). Например:
function log(message) {
console.log(message);
}
log('hello'); // простой вызов
parseInt('42'); // тоже простой вызов
По сравнению с методом объекта (obj.log()) простой вызов отличается тем, что перед именем функции ничего не стоит — ни объект-владелец, ни new. Для JavaScript это самый «голый» способ позвать функцию, и this при таком вызове ведёт себя по default-правилу.
Что в этой главе
Глава разделена на три подглавы, каждая покрывает свой аспект:
- this в вызове функции — базовое поведение в нестрогом режиме, поведение переменных в глобальной области, разница между обычными скриптами и ES-модулями.
- this в вызове функции, строгий режим — чем меняется поведение в 'use strict', почему модули и классы автоматически strict, и что делать с получаемой ошибкой TypeError.
- Опасность: this в качестве внутренней функции — самая частая ловушка: обычная функция внутри метода объекта не наследует this. Три способа обойти проблему.
Начиная с этой главы, порядок разбора — от наиболее частого сценария (простой вызов) до реже встречающихся. Каждая последующая глава посвящена одному способу вызова, и внутри разбираются его особенности плюс типичные ошибки.