Режим `strict mode` в JavaScript
Эта статья объясняет строгий режим
в JavaScript.
YouTube Video
Режим strict mode
в JavaScript
В JavaScript «строгий режим» (strict mode) — это функция, введенная в ECMAScript 5 (ES5) для повышения безопасности кода и предотвращения ошибок. Используя строгий режим, отключаются определенные упрощенные синтаксические конструкции и потенциально опасные функции, а также применяются более строгие проверки ошибок. Это позволяет разработчикам избегать непредсказуемого поведения программы и писать более надежный и высокопроизводительный код.
Включение режима strict mode
Чтобы включить strict mode
, добавьте следующую директиву в начале вашего кода.
1"use strict";
Эту директиву можно применить к всему скрипту или к конкретной функции. Например, если применяется ко всему скрипту, вы можете написать это следующим образом:.
1"use strict";
2
3function example() {
4 // Strict mode is applied
5}
Если применяется для отдельных функций, вы можете написать это следующим образом:.
1function example() {
2 "use strict";
3 // Strict mode is applied only within this function
4}
Режим strict mode
применяется в пределах области видимости, поэтому его можно включить и внутри функции. Кроме того, поскольку строгий режим
по умолчанию включён в модулях, вам не нужно объявлять его отдельно внутри модуля.
Ключевые особенности и отличия режима strict mode
Использование режима strict mode
изменяет некоторые стандартные поведения JavaScript. Вот основные примеры.
Запрет на неявные глобальные переменные
В обычном JavaScript пропуск объявления переменной автоматически делает её глобальной, но в режиме strict mode
это приводит к ошибке.
1"use strict";
2
3x = 10; // Error: x is not defined
Переменные всегда должны быть объявлены с использованием var
, let
или const
.
Ограничение на использование зарезервированных слов
Потенциальные будущие ключевые слова JavaScript (например, implements
, interface
, package
и т.д.) не могут использоваться в качестве имен переменных или функций в режиме strict mode
.
1"use strict";
2
3var package = "strict mode"; // Error: Unexpected strict mode reserved word
Изменения в поведении контекста this
В обычном режиме this
внутри функции относится к глобальному объекту (например, window
в браузерах), но в режиме strict mode
this
является undefined
.
1"use strict";
2
3function example() {
4 console.log(this); // undefined
5}
6
7example();
Это помогает избежать ошибок, вызванных неправильным использованием this
.
Запрет на удаление неизменяемых свойств
В обычном режиме попытка удалить неснимаемые свойства объекта игнорируется без ошибки, но в режиме strict mode
вызывает ошибку.
1"use strict";
2
3var obj = Object.freeze({name: "John"});
4delete obj.name; // Error: Cannot delete property 'name'
Запрет на дублирование имен параметров
В обычном режиме повторное объявление параметров с одинаковыми именами разрешено, но в режиме strict mode
это вызывает ошибку.
1"use strict";
2
3function example(a, a) {
4 // Error: Duplicate parameter name not allowed in this context
5}
Запрет оператора with
Оператор with
может ухудшать читаемость кода и запрещен в режиме strict mode
.
1"use strict";
2
3with (Math) {
4 // Error: Strict mode code may not include a with statement
5}
Преимущества режима strict mode
Режим strict mode
улучшает безопасность и эффективность кода различными способами.
Улучшенное обнаружение ошибок
В режиме strict mode
обнаруживаются ошибки, которые упускаются в обычном режиме, что позволяет разработчикам рано находить потенциальные баги. Например, он предотвращает создание нежелательных глобальных переменных и неправильное использование зарезервированных слов.
Повышенная производительность
В режиме strict mode
движки JavaScript могут более эффективно оптимизировать код. В результате может увеличиться скорость выполнения.
Улучшенная безопасность кода
Обработка this
становится более строгой, предотвращая доступ к ненужным глобальным объектам, что улучшает безопасность кода. Кроме того, ограничение на использование зарезервированных слов предотвращает будущие конфликты с ключевыми словами.
Совместимость и соображения
Режим strict mode
был представлен в ECMAScript 5 и не поддерживается в браузерах, выпущенных до этого. Тем не менее, включение режима strict mode
просто игнорируется неподдерживаемыми браузерами, не ломая скрипт. Следовательно, его можно обычно использовать безопасно.
При внедрении режима strict mode
в крупный существующий проект необходимо проводить тщательное тестирование, чтобы избежать неожиданных ошибок.
Заключение
Режим strict mode
в JavaScript — это чрезвычайно полезная функция для улучшения качества кода. В частности, для крупномасштабных проектов или разработки в команде рекомендуется активно использовать строгий режим для предотвращения неожиданных багов и ошибок, а также для повышения читаемости и сопровождаемости кода.
Понимание и правильное применение режима strict mode
помогает избежать подводных камней JavaScript и обеспечивает более безопасную и эффективную разработку.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.