Введение

JavaScript — универсальный и широко используемый язык программирования, но иногда он может быть слишком снисходительным, когда речь идет о синтаксисе и обработке ошибок. Это может привести к неожиданному поведению и труднодоступным ошибкам в коде. Чтобы помочь разработчикам писать более чистый и надежный код, в JavaScript была введена директива use strict. В этом сообщении блога мы рассмотрим, что такое «строгое использование», почему вы должны его использовать и как реализовать его в вашем коде JavaScript с правильными примерами.

Что такое "строгое использование"?

«use strict» — это директива, представленная в ECMAScript 5 (ES5), которая обеспечивает более строгий синтаксический анализ и обработку ошибок в вашем коде JavaScript. Когда вы включаете «использовать строго», движок JavaScript будет выдавать ошибки для определенных типов ошибок, которые в противном случае просто игнорировались бы. Это поможет вам выявить потенциальные проблемы на ранней стадии и подтолкнет вас к написанию более надежного кода.

Зачем использовать «строгий режим»?

1. Раннее обнаружение ошибок: "использовать строгие правила" помогает выявлять и устранять потенциальные проблемы в коде до того, как они превратятся в труднообнаруживаемые ошибки.
2. Повышение качества кода: за счет применения более строгих правил "строгие правила" поощряют вам писать более чистый и удобный для сопровождения код.
3. Лучшая производительность. Некоторые движки JavaScript могут оптимизировать выполнение кода, когда включено «строгое использование», что приводит к повышению производительности.

Как включить «строгое использование»

Чтобы включить «строгое использование» в вашем коде JavaScript, просто добавьте следующую строку в начало вашего скрипта или функции:

'use strict';

Пример 1. Глобальная область действия

Вы можете включить «use strict» для всего вашего скрипта, поместив директиву вверху вашего файла:

'use strict';
function exampleFunction() {
 // Your code here
}

Пример 2. Объем функции

Если вы хотите включить «использовать строгость» только для определенной функции, вы можете поместить директиву в начало этой функции:

function exampleFunction() {
 'use strict';
 // Your code here
}

Примеры использования strict в действии

1. Предотвращение использования необъявленных переменных

Без «use strict» вы можете случайно создать глобальные переменные, присвоив значение необъявленной переменной:

function withoutStrict() {
   undeclaredVariable = 42;
}

С «use strict» движок JavaScript выдаст ошибку:

function withStrict() {
   'use strict';
   undeclaredVariable = 42; // ReferenceError: undeclaredVariable is not defined
}

2. Запрет повторяющихся имен параметров

Без «use strict» вы можете определить функцию с повторяющимися именами параметров:

function withoutStrict(a, a) {
   // Your code here
}

С «use strict» движок JavaScript выдаст ошибку:

function withStrict(a, a) {
   'use strict';
   // SyntaxError: Duplicate parameter name not allowed in this context
}

3. Запрещение использования оператора with

Оператор with в JavaScript может привести к двусмысленному и трудно отлаживаемому коду. «use strict» запрещает использование оператора «with».

Без «use strict» вы можете использовать оператор «with»:

function withoutStrict(obj) {
   with (obj) {
   console.log(property);
   }
}

С «use strict» движок JavaScript выдаст ошибку:

function withStrict(obj) {
 'use strict';
   with (obj) {
   console.log(property); // SyntaxError: Strict mode code may not include a with statement
   }
}

4. Применение свойств только для чтения

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

Без «строгого использования»:

var obj = Object.freeze({ property: 42 });
function withoutStrict() {
   obj.property = 13; // No error, but the assignment is silently ignored
}

С «использовать строго»:

var obj = Object.freeze({ property: 42 });
function withStrict() {
   'use strict';
   obj.property = 13; // TypeError: Cannot assign to read-only property 'property' of object '#<Object>'
}

5. Ограничение использования eval

В строгом режиме функция eval имеет собственное лексическое окружение, что означает, что переменные, объявленные в вызове eval, недоступны за его пределами.

Без «строгого использования»:

function withoutStrict() {
   eval("var variable = 42;");
   console.log(variable); // 42
}

С «использовать строго»:

function withStrict() {
   'use strict';
   eval("var variable = 42;");
   console.log(variable); // ReferenceError: variable is not defined
}

В заключение, директива use strict является важным инструментом для написания чистого, поддерживаемого и надежного кода JavaScript. Применяя более строгие правила и обнаруживая потенциальные проблемы на раннем этапе, «используйте строгость» помогает вам создавать более качественный код и избегать трудно обнаруживаемых ошибок. Сделайте привычкой включать «строгое использование» в свои проекты JavaScript и наслаждайтесь преимуществами, которые это приносит в процесс разработки.