Проверяет понимание значения this при использовании call в обычном и строгом режимах JavaScript.
В JavaScript значение this внутри функции определяется тем, как функция вызывается. Метод call позволяет явно задать контекст: fn.call(context, arg1, arg2). Однако поведение зависит от режима выполнения кода — обычного или строгого.
В нестрогом режиме, если в call передать null или undefined, то this автоматически заменяется на глобальный объект (в браузере — window). Если передать примитив (например, число или строку), он будет обёрнут в соответствующий объект-обёртку.
function showThis() {
console.log(this);
}
showThis.call(null); // window (в браузере)
showThis.call(42); // Number {42}В строгом режиме ('use strict') такого преобразования не происходит. this остаётся ровно тем значением, которое передано в call, даже если это null или undefined. Это делает поведение более предсказуемым и безопасным.
'use strict';
function showThis() {
console.log(this);
}
showThis.call(null); // null
showThis.call(42); // 42Понимание этого различия важно при написании библиотек или кода, который может выполняться в разных режимах. Например, при создании универсальных функций, которые вызываются с разными контекстами, строгий режим помогает избежать случайной привязки к глобальному объекту.
Используйте строгий режим в современном JavaScript, чтобы this в call вёл себя предсказуемо. Это особенно полезно при работе с функциями, которые могут получать null или undefined в качестве контекста, и помогает избежать ошибок, связанных с неявным обращением к глобальному объекту.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию