Use strict JavaScript — это модель разработки, которая часто используется в современном программировании на JavaScript. Главная особенность этого режима, что он дает возможность разработчикам использовать только ограниченный синтаксис и не допускать лишних ошибок.
Синтаксис «строгого режима» отличается от традиционного синтаксиса JavaScript. В нем не проходят многие ошибки, которые легко пройдут в стандартном. Поэтому очень часто стандартный синтаксис называют «грязным», от того что в нем многие мелкие ошибки игнорируются. Такое «игнорирование» — это не всегда плохо. В мелких проектах молодых разработчиков оно ни к чему плохому не приводит. Но если проект большой, то наличие в коде «мелких» ошибок иногда может привести к непредсказуемым результатам. И чтобы этого не произошло, разработчики применяют режим use strict при разработке на языке JavaScript.
Строгий режим не даст системе закрыть глаза на «тихие» ошибки и заставит ее остановить процесс выполнения программы в случае их обнаружения. То есть этот режим дает возможность писать программы, в которых не будет недочетов.
Use strict в JavaScript
Use strict в JavaScript может применяться ко всему документу сразу или к отдельным его функциям. Для того чтобы включить этот режим в документе, необходимо в нужном месте разместить выражение «Use strict» в одинарных или двойных кавычках.
Когда нет желания подключать весь документ к строгому режиму, нужно осторожно относиться к чередованию «строгих» или «нестрогих» функций в документе. Иногда в такой смеси под «строгий режим» попадает код функции, которая для этого не рассчитана. И наоборот, код, который должен быть в «строгом» режиме, попадает под «нестрогий».
Когда нужно сделать отдельную функцию «строгой», то в ее верхней части тела нужно вписать «Use strict». При этом все, что входит в состав этой функции, будет в «строгом режиме», даже другие вложенные функции.
Отличия «use strict» и стандартный режим в JavaScript
Применение «Use strict» вносит следующие изменения в JavaScript:
При режиме «strict» к неопределенной переменной не присваивается значение.
Нельзя применить инструкцию «with».
Нет возможности добавить повторяющиеся свойства в литерале объекта.
Нет возможности добавить дополнительные параметры формальной функции.
Когда изменяется объект «arguments», не изменяются аргументы.
Когда аргумент является неизменяемым свойством объекта, то «delete» выдаст ошибку.
Нет возможности преобразовать «this» в объект.
Нет возможности изменять «eval» и «arguments», а также применять их в качестве имени.
Увеличенное количество слов, которые зарезервировали для будущего применения.
Нет возможности использовать восьмеричную систему.
Нет возможности применять конструкции кода, которые могут затруднить оптимизацию самого кода.
Нельзя объявить переменную в коде, который был передан методу «eval».
Нельзя удалить обычные переменные.
И др.
Заключение
Use strict в JavaScript — это то, что делает код чище и безопасней. Этот режим существует уже очень долго и поддерживается всеми современными браузерами. Проблемы с этим режимом могут возникнуть только в старых версиях Internet Explorer.
Use strict в JavaScript часто используется для лучшей оптимизации программы, а также для поиска «тихих» ошибок, которые могут давать неоднозначные результаты.
Часто спрашивают: «А всегда ли нужно использовать режим «use strict»?» Вообще это риторический вопрос, и однозначно на него не ответить. С одной стороны, этот режим улучшает код, но другой стороны, при кодировании в этом режиме увеличивается время разработки. Поэтому тут, скорее всего, будет зависеть от проекта и лично от вас как от разработчика: нужен он вам или нет.

JavaScript