Проблема
Разработчики JavaScript часто добавляют в свой код строку "use strict"
. Что делает "use strict"
в JavaScript? Какова причина его использования? Есть ли преимущества от его использования?
Решение
Директива "use strict"
включает строгий режим JavaScript.
Строгий режим JavaScript был введен в ECMAScript 5. Он обеспечивает более строгий синтаксический анализ и обработку ошибок в коде во время выполнения. Это также помогает вам писать более чистый код и выявлять ошибки и ошибки, которые в противном случае могли бы остаться незамеченными.
Применение
Вы можете включить строгий режим двумя разными способами: глобально и локально.
Включите строгий режим глобально, добавив строку "use strict"
в качестве первого оператора в вашем файле. Весь последующий код в скрипте будет выполняться в строгом режиме.
// First line inside a .js file 'use strict'; // rest of the script
Включите строгий режим локально, добавив строку "use strict"
в качестве первого оператора внутри функции. Локальное использование строгого режима внутри функции будет обеспечивать более строгий синтаксический анализ только в контексте этой функции.
// Inside a function function strict_function() { 'use strict'; // rest of the function }
Важно отметить, что модули JavaScript по умолчанию находятся в строгом режиме.
Преимущества использования строгого режима
Включение строгого режима в вашем коде имеет много преимуществ.
Вот некоторые примеры:
Предотвращение случайного создания глобальных переменных
Строгий режим полезен в ситуациях, когда вы можете случайно создать глобальную привязку. Случайные глобальные переменные могут создавать ошибки в коде. Например:
'use strict'; x = 9; // ReferenceError: x is not defined function strict_function() { 'use strict'; x = 'I am a strict function'; console.log(x); } strict_function(); // ReferenceError: x is not defined
Обычный сценарий, в котором вы можете случайно создать глобальные переменные, находится внутри циклов for. При включенном строгом режиме JavaScript выдаст ошибку, если вы забудете добавить ключевое слово let
перед переменной счетчика цикла (counter
в следующем примере):
function catchTheProblem() { 'use strict'; for (counter = 0; counter < 10; counter++) { console.log('Catch me if you can!'); } } catchTheProblem(); // ReferenceError: counter is not defined
Если вы не используете здесь строгий режим, JavaScript создаст глобальную переменную с именем counter
.
Исправляйте опечатки в именах переменных
Если вы не используете строгий режим, опечатка может создать новую переменную, что может привести к ошибкам в дальнейшем. Например:
'use strict'; let misspelledVariable; misspelleVariable = 9; // This line will throw en error due to // misspelling of "misspelledVariable"
Защита от случайного удаления
Удаление переменной, функции или аргумента приведет к ошибке:
'use strict'; let a = 9; delete a; //This will cause an error function testFunction() {} delete testFunction; // This will cause an error function testWithArgs(arg) { delete arg; // This will cause an error }
Запретить дублирование имен параметров в функции
Дублирование имен параметров приведет к ошибке:
function test(arg1, arg1) {} // This will cause an error
Запретить запись в свойства, доступные только для чтения
Если вы установите для объекта доступное для записи значение false
, а затем попытаетесь присвоить объекту новое значение, строгий режим выдаст ошибку:
'use strict'; const obj = {}; Object.defineProperty(obj, 'x', { value: 0, writable: false }); obj.x = 9; // This will cause an error
Удачного кодирования. ⭐️
Надеюсь, вы узнали что-то сегодня! Перед тем, как ты уйдешь:
- 👏 Хлопайте под историю и подписывайтесь на Свати Редху 👩🏻💻
- 📰 Просмотреть дополнительные материалы в Дорожной карте изучения JavaScript на 2023 год — Полное руководство ❤️
- 🔔 Подписывайтесь на: LinkedIn