Какое значение и какие преимущества дает включение ‘use strict’ в начало исходного файла JavaScript?

В JavaScript оператор use strict позволяет нам выбрать строгий режим для написания и выполнения нашего кода.

Обычный JS очень дружелюбен к новичкам.

  • Он не допускает синтаксических ошибок, умалчивая о них, что может привести к незамеченным ошибкам.
  • Он делает много тяжелой работы по сопоставлению переменных с их идентификаторами, проверяя цепочку областей видимости для каждого имени — что требует затрат времени и памяти.
  • Облегчает жизнь, считая значения параметров, заданные при определении функции, такими же, как значения, переданные функции при вызове, элементами объекта arguments — что иногда может сделать фактические переданные значения несущественными.
  • Он автобоксирует значение this функции и раскрывает API Function.prototype.caller и Function.prototype.arguments, что дает доступ к вызывающей функции и объекту arguments соответственно. Все эти три API создают проблемы с безопасностью.

Строгий режим

Строгий режим решает эти проблемы и вносит изменения, чтобы дать разработчикам больше контроля над своим кодом. Эти изменения можно разделить на четыре категории. Ниже мы кратко рассмотрим некоторые из них в каждой категории. Для подробного объяснения и примеров кода, пожалуйста, обратитесь к этой замечательной статье на MDN

1. Изменения, связанные с ошибками, возникающими при синтаксисе и преобразовании типов

Ошибки, связанные с синтаксисом и приведением типов, приводят к ошибкам, вместо того чтобы молча игнорировать их. Их несколько.
Например,

  • неправильно введенные переменные вызывают ошибку ReferenceError.
  • Присвоение неперезаписываемому глобалу (например, undefined или NaN) вызывает ошибку TypeError.

Пожалуйста, обратитесь к этому разделу статьи MDN Strict Mode для получения дополнительных примеров.

2. Изменения, связанные с использованием переменных

  • Сопоставление имен переменных оптимизировано за счет запрета использования with.
  • Удаление объявленных переменных запрещено.

3. Изменения, связанные с объектами eval и arguments.

4. Изменения, связанные с безопасностью

  • Написанный код становится более безопасным за счет предотвращения автоопределения this. Значения undefined и null объекта this не автобоксируются в объект Global.

Ссылки

  1. Строгий режим
  2. Что делает «use strict» в JavaScript, и что за этим стоит?

Оцените статью
devanswers.ru
Добавить комментарий