Зачем использовать 'use sctrict'
Когда я только начинала писать код, мне кто-то сказал, что в JavaScript следует использовать строгий режим, но вот почему - особо не объяснили, да и я тогда не спросила...
Сегодня мы с вами поговорим немного подробнее про то, что такое строгий режим, почему его стоит использовать и как можно настроить автоматику, чтобы про него не забывать!
Что же делает эта строка?
Указание на то, что код должен интерпретироваться в строгом режиме, указывает пользовательским агентам, таким как браузеры, что они должны обрабатывать код буквально так, как он написан, и выдавать ошибку, если код не имеет смысла.
Без включенного строгого режима агенты часто выполняют ряд модификаций проблемного кода в попытке придать ему смысл.
Давайте рассмотрим простой пример, где мы хотим создать переменную и просто вывести ее на экран. В адекватном состоянии мы это напишем примерно так:
const test = 'Hello'; console.log(test);
Если мы запустим этот скрипт в браузере, то в консоли увидим ожидаемое значение.
Но что если я - разработчик, который пишет код рано утром после тусы и написала следующее:
test = 'Hello'; console.log(test);
Как думаете, такой код что-то выведет нам при запуске в браузере?
Не знаю что вы ответили на вопрос выше, но да, браузер так же выведет в консоль значение переменной, а все это произойдет из-за того, что агент сам додумает за вас и поймет, что раз уж вы присвоили переменной значение, значит вы ее и объявить хотели.
На первый взгляд это может показаться прекрасной вещью, и действительно, работа вне строгого режима позволяет людям писать "прекрасный" JavaScript код, не вдаваясь во все детали.
Однако, как разработчик, я не хочу оставлять ошибку в своем коде, потому что я знаю, что она может вернуться в виде огромного и непонятного набора багов, и я также просто хочу писать хороший код. И вот тут-то и выручает строгий режим.
Давайте добавим в наш файл новую первую строчку:
'use strict'; test = 'Hello'; console.log(test);
Современные браузеры распознают эту строку как инструкцию для переключения в строгий режим. Поэтому, сохранив это и снова проверив в своем браузере, теперь я вижу ошибку ссылки. И это то, чего я хочу, когда пытаюсь работать с переменной, которую я не определила.
Хотя может показаться, что строгий режим создает больше работы, на самом деле это действительно хороший компромисс, потому что он избавляет от дополнительной головной боли позже, когда вы устраняете ошибки в коде, который вы пишете. Поэтому убедитесь, что первая строка в любом создаваемом вами файле JavaScript
- use strict
.
Настроим автоматику
Чтобы не забывать про эту строку, можно настроить правила ESLint
таким образом, чтобы редактор ругался, когда такой строки нет.
Для этого в файле .eslintrc.js
вашего проекта нужно указать новое правило:
rules: { strict: ['error', 'global']; }
Правило принимает массив из двух значений. Первый - это серьезность проблемы, если она возникает. Серьезность может быть отключена, предупреждающей или ошибкой
И второй - когда требуется строгий режим, только в функциях или глобально.
Подробнее о том, как настраивается это правило можно почитать тут.
Если вы добавите это правило и создадите JS файл, в котором не будет строгого режима, то увидите, что имя файла в панели проводника становится красным, и появляются красные закорючки под всем кодом.
Включение этого правила в eslint
, гарантирует, что и редактор, и анализатор будут сообщать о любых методах ленивого написания кода, а результатом будет повышение общего качества кода.
На этом сегодня все, не забывайте подписываться на мой телеграм канал