Я просматривал ссылку на JavaScript в Mozilla Developer Network и наткнулся на то, что называется "strict mode"
. Я перечитал его, и у меня возникли проблемы с пониманием того, что он делает. Может ли кто-нибудь кратко объяснить (в общем), какова его цель и как она полезна?
javascript
strict-mode
nkcmr
источник
источник
Ответы:
Его основная цель - сделать больше проверок.
Просто добавьте
"use strict";
вверху вашего кода, прежде чем что-либо еще.Например,
blah = 33;
допустим JavaScript. Это означает, что вы создаете полностью глобальную переменнуюblah
.Но в строгом режиме это ошибка, потому что вы не использовали ключевое слово «var» для объявления переменной.
В большинстве случаев вы не хотите создавать глобальные переменные в середине произвольной области видимости, поэтому большую часть времени
blah = 33
пишется, что это ошибка, и программист на самом деле не хотел, чтобы она была глобальной переменной, они имели в виду написатьvar blah = 33
.Это также запрещает многие вещи, которые технически обоснованно делать.
NaN = "lol"
не выдает ошибку. Это также не меняет значение NaN. использование строгого this (и подобных странных операторов) приводит к ошибкам. Большинство людей ценят это, потому что нет причин писатьNaN = "lol"
, поэтому, скорее всего, была опечатка.Узнайте больше на странице MDN о строгом режиме
источник
Один из аспектов строгого режима уже не упоминается в ответе Саймона, что строгие множества режимов
this
дляundefined
функций вызываются с помощью вызова функции.Итак, такие вещи
вызовет ошибку при
privateMethod
вызове (поскольку вы не можете добавить свойство кundefined
), вместо того, чтобы бесполезно добавлятьb
свойство к глобальному объекту.источник
privateMethod.bind(this)();
и позвонить сnew
jsbin.com
Строгий режим был добавлен, чтобы было легко поддающееся статическому анализу подмножество EcmaScript, которое было бы хорошей целью для будущих версий языка. Строгий режим также был разработан в надежде на то, что разработчики, ограничивающие себя строгим режимом, будут совершать меньше ошибок и что ошибки, которые они делают, будут проявляться более очевидными способами.
Harmony , который, как мы надеемся, станет следующей основной версией EcmaScript, будет построен на основе строгой ES5.
Некоторые другие языковые эксперименты также зависят от строгого режима. SES зависит от анализируемости строгого режима ES5.
Приложение C стандарта объясняет различия между строгим режимом и нормальным режимом.
источник
Вызов строгого режима в коде
Строгий режим применяется ко всем сценариям или к отдельной функции. Это не относится к оператору блока, заключенному в фигурные скобки {}, попытка применить его к таким контекстам ничего не делает.
Весь сценарий:
Допустим, мы создаем app.js, поэтому добавление сценария использования первого оператора приведет к строгому режиму для всего кода.
Строгий режим для функции:
Чтобы вызвать строгий режим для функции, поместите точное выражение «используйте строгий»; в начале тела функции перед любым другим оператором.
Строгий режим включает несколько изменений в обычной семантике Javascript. Первый строгий режим устраняет некоторые тихие ошибки JavaScript, изменяя их на выдачу ошибок.
Для экземпляра: код с использованием строгого режима
В приведенном выше примере кода без использования строгого режима в коде ошибка не выдаст. Поскольку мы обращаемся к переменной,
x
не объявляя ее. Поэтому в строгом режиме доступа к необъявленной переменной выдается ошибка.Теперь давайте попробуем получить доступ к переменной x, не объявляя ее без строгого режима.
Преимущество использования строгого режима:
источник
Строгий режим вносит несколько изменений в обычную семантику JavaScript.
строгий режим устраняет некоторые тихие ошибки JavaScript, изменяя их на ошибки.
строгий режим исправляет ошибки, мешающие движкам JavaScript выполнять оптимизацию.
строгий режим запрещает некоторый синтаксис, который, вероятно, будет определен в будущих версиях ECMAScript.
источник
ECMAScript5
вводит некоторые новые объекты и свойства, а также так называемые"strict mode"
.Строгий режим является подмножеством языка, который исключает устаревшие функции. Строгий режим является обязательным и необязательным, это означает, что если вы хотите, чтобы ваш код выполнялся в строгом режиме, вы объявляете о своем намерении, используя (один раз для функции или один раз для всей программы) следующую строку:
источник
2017, и я наконец нашел документацию:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
источник
Вопрос:
Ниже приведена проблема, с которой я столкнулся, я следовал учебному пособию, и в итоге я попытался скомпилировать следующий
scss
файл и сгенерировать из него код CSS,используя следующую
gulpfile.js
задачу:Итак, ошибка, которую я получаю, заключается в следующем:
Решение:
Итак, он показывает мне
index.js
файл, который находится внутри моего модуля gulp-sass (который в основном заблокирован и не должен редактироваться). Но если я решительно добавлю"use_strict"
верхнюю часть этогоindex.js
файла, моя задача будет выполнена гладко.Я был беспомощен, поэтому я продолжаю использовать это как решение! Но затем, пройдя некоторые другие вопросы и ответы по SO , я увидел следующий ответ :
и вскоре я обновил свои NodeJ (до Version10.x), а затем перестроил Gulp, выполнив следующие команды, как дал мне указание терминала:
И все в порядке. Так вот как это было решено. Я отменил изменения, которые я сделал для
index.js
файла модуля gulp. И теперь все идет гладко.Надеюсь, что этот ответ будет полезен для кого-то там!
источник