> Что такое директива 'use strict' в JavaScript и как она влияет на код (JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Сбер
Стек: JavaScript
> Пример ответа
Короткий ответ
Директива 'use strict' включает строгий режим выполнения JavaScript. Она запрещает использование необъявленных переменных, удаление свойств объектов, дублирование параметров функций и другие потенциально опасные конструкции. Строгий режим делает код более безопасным и предсказуемым, превращая некоторые "тихие" ошибки в явные исключения.
Подробное объяснение
'use strict' - это директива, которая переводит весь скрипт или отдельную функцию в строгий режим. Она была введена в ECMAScript 5 и действует только в современных браузерах.
Основные изменения в строгом режиме:
- Запрет неявного создания глобальных переменных: присваивание значения необъявленной переменной вызывает ошибку
- Запрет удаления свойств, которые нельзя удалить:
deleteдля обычных переменных, функций или аргументов вызывает ошибку - Запрет дублирования имен параметров:
function(a, a)вызовет ошибку - Запрет
with: конструкцияwithполностью запрещена - Изменение
this: в обычном режимеthisв функции без контекста ссылается на глобальный объект, в строгом -undefined - Запрет использования
arguments.calleeиarguments.caller - Запрет записи в read-only свойства: попытка изменить неизменяемое свойство вызывает ошибку
- Дополнительные ограничения: запрет на восьмеричные литералы (
010),evalне создает переменные в окружающей области видимости
Директиву можно применить:
- Ко всему скрипту:
'use strict';в начале файла - К отдельной функции:
'use strict';в начале тела функции - В модулях ES6: строгий режим включен по умолчанию
На практике
На собеседовании для junior-позиции достаточно показать понимание базовых ограничений и причин использования. Практические рекомендации:
- Всегда используйте
'use strict'в новых проектах - это предотвращает распространенные ошибки - В современных проектах с ES-модулями или сборщиками (Webpack, Vite) строгий режим включается автоматически
- Если работаете с legacy-кодом, добавляйте строгий режим постепенно, проверяя совместимость
- При написании библиотек, которые могут использоваться в разных окружениях, используйте строгий режим внутри функции, чтобы не влиять на глобальный код
Пример кода
JAVASCRIPT// Обычный режимfunction normalMode() {x = 10; // Создает глобальную переменную xconsole.log(x); // 10}// Строгий режимfunction strictMode() {'use strict';y = 20; // ReferenceError: y is not defined}// this в обычном режимеfunction showThis() {console.log(this); // window (в браузере)}// this в строгом режимеfunction showThisStrict() {'use strict';console.log(this); // undefined}// Дублирование параметровfunction duplicateParams(a, a) {'use strict'; // SyntaxError: duplicate formal parameter}
Как отвечать на собеседовании
Начните с краткого определения: "'use strict' - это директива, которая включает строгий режим, делающий JavaScript более безопасным". Затем перечислите 2-3 ключевых изменения: запрет необъявленных переменных, изменение this, запрет дублирования параметров. Объясните, почему это полезно: предотвращает случайные глобальные переменные, делает ошибки явными. Упомяните, что в ES-модулях строгий режим включен по умолчанию. Если спросят про this - объясните разницу между обычным и строгим режимом.
Что проверяет интервьюер
Интервьюер проверяет:
- Понимание базовых механизмов JavaScript и его эволюции
- Знание потенциальных проблем в коде и способов их предотвращения
- Умение объяснить разницу между режимами выполнения
- Осведомленность о современных стандартах (ES6+)
- Способность применять директиву на практике
Типичные ошибки
- Путаница с
'use strict'и'use asm'- это разные директивы - Утверждение, что строгий режим делает код медленнее - на самом деле он может ускорить выполнение
- Игнорирование области действия -
'use strict'внутри функции не влияет на внешний код - Забывают, что в ES-модулях строгий режим включен по умолчанию
- Думают, что
'use strict'исправляет все ошибки - он только превращает некоторые "тихие" ошибки в явные исключения - Не знают про запрет
with- это важное отличие от обычного режима
> Похожие задачи по frontend
Что происходит при проверке статуса Promise в JavaScript, если он может выполниться раньше?
Куда пойдет выполнение при конкурентном запуске нескольких задач в JavaScript
В чем разница между filter и slice для удаления элементов в JavaScript?
Какие инструменты для стилей вы используете и выделяете ли что-то в JS
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью