Как strict mode влияет на обычный вызов функции

Нестрогий обычный вызов получает глобальный объект, строгий — undefined. Вызов как obj.read() в обоих случаях передаёт obj как получателя.

Короткий ответ

Что ответить на собеседовании

Нестрогий обычный вызов получает глобальный объект, строгий — undefined. Вызов как obj.read() в обоих случаях передаёт obj как получателя.

Подробный разбор

Ответ с пояснениями

Условие

Сравните function read(){ return this; } read() в нестрогом классическом браузерном script и ту же функцию с директивой 'use strict' внутри тела. Что изменится?

Ответ

Нестрогий обычный вызов получает глобальный объект, строгий — undefined. Вызов как obj.read() в обоих случаях передаёт obj как получателя.

Strict mode определяется для тела функции, а не просто для места её вызова. Стрелочная функция не создаёт собственный this и наследует его из внешней области, поэтому сравнивать её нужно с учётом места объявления. В ES-модулях строгий режим включён автоматически; примеры из консоли браузера могут иметь другую оболочку.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее