Проверяет понимание значения this при вызове функции через call без контекста в строгом и нестрогом режимах.
Метод call позволяет вызвать функцию с явно указанным значением this. Первый аргумент call — это контекст, который будет доступен внутри функции как this. Если передать null или undefined в качестве первого аргумента, поведение зависит от режима выполнения кода.
В обычном (нестрогом) режиме, если передать null или undefined в call, JavaScript автоматически заменит их на глобальный объект. В браузере это window, в Node.js — global. Это историческое поведение, которое может приводить к неожиданным ошибкам, если вы случайно потеряете контекст.
function showThis() {
console.log(this);
}
showThis.call(null); // window (в браузере)
showThis.call(undefined); // window (в браузере)В строгом режиме ('use strict') правила меняются. Если передать null или undefined в call, this останется равным null или undefined соответственно. Это делает поведение более предсказуемым и безопасным, так как вы явно видите, что контекст не был установлен.
'use strict';
function showThis() {
console.log(this);
}
showThis.call(null); // null
showThis.call(undefined); // undefinedПонимание этого различия важно при написании библиотек или функций, которые могут вызываться с произвольным контекстом. Например, если вы используете call для передачи метода как callback, вы должны быть уверены, что контекст будет корректным. В строгом режиме легче отловить ошибки, связанные с потерей контекста, так как this не будет молча заменён на глобальный объект.
В нестрогом режиме this при вызове через call без контекста становится глобальным объектом, а в строгом — остаётся undefined. Рекомендуется всегда использовать строгий режим в современном коде, чтобы избежать неявных глобальных привязок и сделать поведение более явным.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию