В этой статье вы найдете необходимые знания о JavaScript, в которых в основном рассматриваются проблемы, связанные со строгим режимом. Строгий режим легко понять. Это ограничительный режим JavaScript, который неявно отделяет код от «ленивого режима», давайте посмотрим. надеюсь, это будет полезно всем.
[Рекомендации по теме: видеоурок по JavaScript, веб-интерфейс]
В стандарте ECMAScript5 JavaScript предложил концепцию строгого режима:
Строгий режим легко понять: это ограничительный режим JavaScript, который заставляет код неявно выходить из «ленивого режима».
Когда браузер, поддерживающий строгий режим, обнаруживает строгий режим в коде, он будет обнаруживать и выполнять код более строгим образом.
Строгий режим накладывает некоторые ограничения на обычную семантику JavaScript:
Строгий режим устраняет некоторые исходные молчаливые ошибки , выдавая их .
Строгий режим позволяет движку JS выполнять больше оптимизации при выполнении кода (без необходимости иметь дело с каким-то специальным синтаксисом).
Строгий режим отключает некоторый синтаксис, который может быть определен в будущих версиях ECMAScript.
Так как же включить строгий режим? Строгий режим поддерживает детальную миграцию:
Может поддерживать включение строгого режима в файлах js;
Он также поддерживает включение строгого режима для определенной функции;
JavaScript спроектирован так, чтобы его было проще использовать начинающим разработчикам, поэтому иногда он имеет неправильный синтаксис, но не думайте, что его можно нормально проанализировать;
Однако этот метод может создать угрозу безопасности;
В строгом режиме такая транзакция будет рассматриваться как ошибка, поэтому ее можно будет быстро обнаружить и исправить;
Вот краткий обзор некоторых распространенных ограничений:
Есть два способа случайно создать глобальные переменные:
Глобально объявляйте глобальные переменные напрямую, без использования ключевых слов.
Если вы объявите переменную без использования ключевых слов внутри функции, функция по умолчанию будет преобразована в глобальную переменную. Пример кода выглядит следующим образом:
«используйте строгий»
// Отключаем случайное создание глобальных переменных message = 'Случайное создание глобальных переменных'
console.log(message) //Сообщение об ошибке: Uncaught ReferenceError: сообщение не определено
функция foo () {
возраст=20
console.log(возраст)
}
foo() // Ошибка ссылки: возраст не определенПример кода выглядит следующим образом:
//Включаем строгий режим и преобразуем проблему непосредственно в ошибку «использовать строгий» const v = 100;//(определить константу) v = 1.14; //Переназначаем значение (переменной) console.log(v); // Неперехваченная ошибка типа: присвоение постоянной переменной.
В строгом режиме вы не можете использовать оператор отмены выбора для переменных.
// Включаем строгий режим 'use strict' вар v = 100; delete v;//В нестрогом режиме: это тихий сбой, ни об ошибке не сообщается, ни переменная v не удаляется. console.log(v);//100 //После включения строгого режима вместо этого выдается сообщение об ошибке Удаление неполного идентификатора в строгом режиме.
В строгом режиме использование ключевого слова delete для атрибутов массивов и методов имеет тот же эффект.
// Включаем строгий режим 'use strict'
// 1. Удалить содержимое массива в строгом режиме var arr = [1,2,3,4]
удалить arr[0];
console.log(arr);//[ <1 пустой элемент>, 2, 3, 4 ]
// 2. Атрибуты функции удаления в строгом режиме var obj = {
название: 'Человек-Свинья'
}
удалить имя объекта;
console.log(obj.name)//не определеноПример кода выглядит следующим образом:
«используйте строгий»
// Функции с одинаковым именем параметра не разрешены function foo2 (x, y, x) {
console.log(x, y, x)
}
foo2(10, 20, 30) // SyntaxError: дублирование имени параметра не разрешено в этом контекстеПример кода выглядит следующим образом:
// Исходный восьмеричный формат var num1 = 0123 не допускается var num2 = 0o123 // Может быть записано в восьмеричном формате var num3 = 0x123 // Может быть записано в шестнадцатеричном формате var num4 = 0b100 // Может быть записано в этом формате как двоичное console.log(num1) // SyntaxError: Восьмеричные литералы не допускаются в строгом режиме. console.log(num2, num3, num4) // 83 291 4
Пример кода выглядит следующим образом:
«используйте строгий»
var message = 'Привет, мир';
var obj = { name: 'jam', возраст: 20 }
//Инструкция with может формировать свою собственную область действия. При печати age в инструкции with будет выведен атрибут age в объекте obj. Однако, когда несуществующее сообщение атрибута будет напечатано в инструкции with, оно будет напечатано. один уровень до внешней области видимости. Один уровень для поиска функции foo () {.
с (объект) {
console.log(возраст)
console.log(сообщение)
}
console.log(сообщение)
}
foo() // SyntaxError: код строгого режима не может включать оператор withПример кода выглядит следующим образом:
var jsString = "var message = 'привет, мир';console.log(message)" eval(jsString) // Вывод здравствуй, мир console.log(message) //Сообщение об ошибке: ReferenceError: сообщение не определено
开启严格模式eval函数不会向上引用变量所以全局作用域就没有message这个变量所以会报错
Пример кода выглядит следующим образом:
«используйте строгий»
// В строгом режиме самоисполняющаяся функция (привязка по умолчанию) будет указывать на неопределенное, а в нестрогом режиме — на окно
функция foo () {
console.log(это)
}
foo() // не определено