Ванильный код
May 19, 2022

Зачем использовать '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, гарантирует, что и редактор, и анализатор будут сообщать о любых методах ленивого написания кода, а результатом будет повышение общего качества кода.

На этом сегодня все, не забывайте подписываться на мой телеграм канал