Что делает «использование строгого» в JavaScript, и каковы причины этого? - PullRequest
7174 голосов
/ 26 августа 2009

Недавно я выполнил часть своего кода JavaScript через JSLint Крокфорда, и он выдал следующую ошибку:

Проблема в строке 1, символ 1: отсутствует выражение "использовать строгий".

Занимаясь поиском, я понял, что некоторые люди добавляют "use strict"; в свой код JavaScript. Как только я добавил заявление, ошибка перестала появляться. К сожалению, Google не раскрыл большую часть истории этого строкового утверждения. Конечно, это как-то связано с тем, как браузер интерпретирует JavaScript, но я понятия не имею, каков будет эффект.

Так что же такое "use strict";, что оно подразумевает и все еще актуально?

Отвечает ли текущий браузер строке "use strict"; или она предназначена для использования в будущем?

Ответы [ 26 ]

11 голосов
/ 03 мая 2016

«строгое использование»; это попытка ECMA сделать JavaScript немного более надежным. Это привносит в JS попытку сделать его хотя бы немного «строгим» (другие языки применяют строгие правила с 90-х годов). Это на самом деле «заставляет» разработчиков JavaScript следовать некоторым рекомендациям по кодированию. Тем не менее, JavaScript очень хрупкий. Не существует таких вещей, как типизированные переменные, типизированные методы и т. Д. Я настоятельно рекомендую разработчикам JavaScript изучать более надежный язык, такой как Java или ActionScript3, и применять те же самые лучшие практики в своем коде JavaScript, это будет работать лучше и будет легче отлаживать.

10 голосов

use strict - это способ сделать ваш код более безопасным, потому что вы не можете использовать опасные функции, которые могут работать не так, как вы ожидаете. И как было написано до того, как код станет более строгим.

10 голосов
/ 17 октября 2016

Use Strict используется для отображения распространенных и повторяющихся ошибок, так что он обрабатывается по-разному, и изменяет способ выполнения сценария Java, такие изменения:

  • Предотвращает случайные глобалы

  • Без дубликатов

  • Исключается с

  • Устраняет это принуждение

  • Более безопасный eval ()

  • Ошибки для неизменяемых

Вы также можете прочитать эту статью для деталей

10 голосов
/ 11 ноября 2016

JavaScript «строгий» режим был введен в ECMAScript 5.

(function() {
  "use strict";
  your code...
})();

Запись "use strict"; в самом верху вашего файла JS включает строгое проверка синтаксиса. Он выполняет следующие задачи для нас:

  1. показывает ошибку, если вы пытаетесь присвоить необъявленную переменную

  2. останавливает перезапись ключевых системных библиотек JS

  3. запрещает некоторые небезопасные или подверженные ошибкам языковые функции

use strict также работает внутри отдельных функций. Всегда лучше включать в ваш код use strict.

Проблема совместимости браузера: Директивы «use» предназначены для обратной совместимости. Браузеры, которые их не поддерживают, просто увидят строковый литерал, на который больше нет ссылок. Итак, они пройдут над ним и пойдут дальше.

9 голосов
/ 20 ноября 2016

Обычно JavaScript не следует строгим правилам, что увеличивает вероятность ошибок. После использования "use strict" код JavaScript должен следовать строгому набору правил, как и в других языках программирования, таких как использование терминаторов, объявление перед инициализацией и т. Д.

Если используется "use strict", код должен быть написан в соответствии со строгим набором правил, что снижает вероятность ошибок и неясностей.

3 голосов
/ 28 января 2019

«использовать строгое»; Определяет, что код JavaScript должен выполняться в "строгий режим".

  • Директива "use strict" была новой в ECMAScript версии 5.
  • Это не утверждение, а буквальное выражение, игнорируемое ранее версии JavaScript.
  • Цель «использовать строгое» - указать, что код должен быть выполнено в «строгом режиме».
  • В строгом режиме нельзя, например, использовать необъявленные переменные.

Все современные браузеры поддерживают «строгое использование», кроме Internet Explorer 9 и ниже .

Неудобство

Если разработчик использовал библиотеку, которая была в строгом режиме, но разработчик привык работать в обычном режиме, он мог бы вызвать некоторые действия с библиотекой, которые не будут работать должным образом.

Хуже того, поскольку разработчик находится в обычном режиме, у него нет преимуществ, связанных с дополнительными ошибками, поэтому ошибка может молча завершаться ошибкой.

Кроме того, как указано выше, строгий режим не позволяет вам выполнять определенные действия.

Люди обычно думают, что вы не должны использовать эти вещи в первую очередь, но некоторым разработчикам не нравятся ограничения, и они хотят использовать все функции языка.

...