Коротка відповідь
junioruse strict — це директива, яка активує суворий режим виконання в JavaScript. Вона змушує мову перевіряти кращі практики, блокує неявні глобальні змінні і підвищує безпеку коду. Приклад: `'use strict'; function foo(){ let a=1; }`
Повне пояснення
Що це і навіщо
use strict– директива, що включає strict mode у JavaScript. Вона змушує інтерпретатор виконувати код з жорсткішими правилами, що запобігає типові помилки.
Ключові принципи/терміни
- Strict mode блокує створення неявних глобальних змінних.
- Забороняє використання
evalбез явного параметру. - Підвищує точність перевірки типів (наприклад,
deleteна властивості об’єкта не дозволено).
Як це працює
- Директива розміщується на початку скрипту або функції.
- Якщо вона присутня, інтерпретатор застосовує суворі правила до всього блоку.
Практика і реалізація
// У файлі script.js
'use strict';
function calculate() {
let result = 0;
for (let i = 1; i <= 10; i++) {
result += i;
}
return result;
}
Тестування
- У Jest можна перевірити, що код не створює глобальних змінних:
test('no implicit globals', () => {
expect(() => { eval("x = 5;"); }).toThrow();
});
Безпека і приватність
use strictзменшує ризик XSS, оскільки обмежує використанняeval.- Підвищує надійність коду, що важливо для бекенд‑сервісів (наприклад, у NestJS).
Особливості в контексті JavaScript/TypeScript
- У TypeScript директива автоматично включається, якщо компілятор налаштований на
target: es5або вище. - У ES6+ модулі (
import/export) вже працюють у суворому режимі без явної директиви.
Оптимізація, типові помилки та edge cases
- Необхідно розміщувати директиву на початку кожної функції, якщо потрібен локальний strict mode.
- Помилка:
deleteна властивості об’єкта в strict mode піднімає TypeError. - Edge case:
evalу strict mode не створює нові змінні в зовнішньому контексті.
Диагностика і отладка
- Якщо код піднімає
ReferenceError: x is not defined, перевірте, чи не створювалися неявні глобальні. - У браузері відкрийте DevTools → Console, щоб побачити повідомлення про помилки strict mode.
Альтернативи
- У сучасних проектах можна просто використовувати ES6+ модулі, що автоматично включають strict mode.
- Якщо потрібен контроль над режимом у старих скриптах, залишайте директиву вручну.