Изучаем JavaScript "use strict". Часть 2
В прошлой статье мы обсуждали использование директивы “use strict”, а в этой статье продолжим изучать особенности этой директивы.
Дублирующие имена параметров
В строгом режиме вы не можете объявлять одно и то же имя параметра более одного раза.
function print(value, value) {} // выбрасывается исключение.
Восьмеричные числовые литералы и escape-символы не допускаются в строгом режиме.
var testStrict = 010; // генерирует исключение
var testStrict = \\ 010; // генерирует исключение.
Свойства только для чтения
Запись в свойства объекта только для чтения и в геттеры выбрасывает исключение.
var testObjone = {};
Object.defineProperties (testObjone, "х", {value: 0, writeable: false});
testObjone.x = 3,14; // исключение.
var testObjtwo = {get x () {return 0}};
testObjtwo.x = 3,14; // исключение.
"Eval" и "arguments"
Мы не можем использовать строки eval и arguments в качестве переменных, свойств или имен объектов в строгом режиме.
var eval = 12; // В нестрогом режиме eval перезаписывается. Однако в строгом
режиме будет брошено исключение.
var arguments = 12; // То же поведение, что и выше.
Инструкция «with»
Использование «with» не допускается в строгом режиме.
with(Math) {x = sin (2)}; // генерирует исключение.
Зарезервированные ключевые слова
В строгом режиме мы не можем использовать некоторые слова, зарезервированные для будущей версии JavaScript.
Зарезервированные ключевые слова:
- implements
- interface
- package
- private
- protected
- public
- static
- yield
"use strict"
var private = 12; // в нестрогом режиме это разрешено. В строгом режиме нет.
Ключевое слово "this"
Ключевое слово this внутри глобальных функций не определено в строгом режиме.
"use strict"
function checkforthis(){
console.log(this); //напечатает undefined.
}
checkforthis();
Функция eval создает переменные в области, из которой она была вызвана. Но в строгом режиме это не так.
"use strict"
eval ("var q = 12");
console.log (q); // генерирует исключение. переменная q не определена.
Преимущества строгого режима
- Строгий режим изменяет ранее терпимый «плохой синтаксис» на ошибки.
- В случае ошибочного определения переменной, создается новая глобальная переменная. В строгом режиме это вызовет ошибку, из-за чего невозможно случайно создать свойство глобального объекта window.
- В обычном JavaScript разработчик не получит никакой информации об ошибке, присваивая значения не записываемым свойствам. А также любое присваивание незаписываемому свойству, свойству только для чтения, несуществующему свойство, несуществующая переменная или несуществующий объект, выдает ошибку
Таким образом, исходя из сказанного выше, мы можем сказать, что строгий режим помогает нам сокращать распространенные ошибки программирования, а также делает наш код совместимым с будущими версиями браузеров.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.