В этом материале рассмотрим одну из важнейших функциональностей JavaScript , называемую "строгим режимом" ( strict mode ).

Изучаем JavaScript "use strict". Часть 1

В этом материале рассмотрим одну из важнейших функциональностей JavaScript, называемую "строгим режимом" (strict mode).

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

Использование "strict mode"

Чтобы начать выполнять код в строгом режиме, нам нужно использовать директиву «use strict». Это просто выражение. Эта директива поддерживается в JavaScript 1.8.5 (ECMAScript 5) или выше.

Использование директивы «use strict»

Существует два способа использования директивы «use strict». Мы можем использовать ее или внутри объявления функции в самом начале или в глобальном объявлении – в начале файла.
Когда мы используем режим «strict mode» как глобальную директиву, весь код javascript на странице выполняется в строгом режиме. Например:

  "use strict"

  function print(value) {
   console.log (value);
  }

Когда мы используем «use strict» внутри объявления функции, весь код внутри функции выполняется в строгом режиме. Весь другой код вне функции выполняется в обычном режиме.
Например:

 function print(value) {
   "use strict"
   console.log (value);
  }

  function print_twice(value) {
   console.log (value);
   console.log (value);
  }

Что мы не можем сделать в строгом режиме:

Использование необъявленной переменной

В строгом режиме мы не можем использовать необъявленную переменную.

  "use string"
  a = 12; // выбрасывается исключение в строгом режиме. В нестрогом режиме создается новое свойство для объекта window.

Оператор delete

Оператор delete используется для удаления пользовательских свойств у объекта и элементов массива. Если мы попытаемся удалить что-либо, кроме определенных пользователем свойств объекта или элементов массива, мы получим исключение.

  "use strict"

  var a = 78;
  window.b = 34;

  function print () {}
  window.c = function () {}

  delete a; // генерирует исключение в строгом режиме. В стандартном режиме он   возвращает false и программа продолжает работу

  delete window.a; // генерирует исключение в строгом режиме. В нестандартном   режиме он возвращает false и программа продолжается.

  delete window.b; // В обоих режимах свойство b удаляется
.
  delete Math.PI; // В нестрогом режиме он возвращает false, поскольку PI   предварительно определен. В строгом режиме - исключение.

  delete Object.prototype; // удаление встроенного свойства в нестрогом режиме возвращает false. Но в строгом режиме выбрасывается исключение.

Просто помните, что везде, где delete возвращает false в нестрогом режиме, он выдает исключение в строгом режиме.

Многократное объявление свойств

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

  var myObject = {property1: 1, property2: 2, property1: 1}; // генерирует исключение.

На этом все, а в следующей статье мы продолжим изучать директиву JavaScript "use strict".