Нестрогий обычный вызов получает глобальный объект, строгий — undefined. Вызов как obj.read() в обоих случаях передаёт obj как получателя.
Как strict mode влияет на обычный вызов функции
Нестрогий обычный вызов получает глобальный объект, строгий — undefined. Вызов как obj.read() в обоих случаях передаёт obj как получателя.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Сравните function read(){ return this; } read() в нестрогом классическом браузерном script и ту же функцию с директивой 'use strict' внутри тела. Что изменится?
Ответ
Нестрогий обычный вызов получает глобальный объект, строгий — undefined. Вызов как obj.read() в обоих случаях передаёт obj как получателя.
Strict mode определяется для тела функции, а не просто для места её вызова. Стрелочная функция не создаёт собственный this и наследует его из внешней области, поэтому сравнивать её нужно с учётом места объявления. В ES-модулях строгий режим включён автоматически; примеры из консоли браузера могут иметь другую оболочку.