JavaScript - Strict Mode

Здравствуйте, будущие маги JavaScript! Сегодня мы окунемся в тему, которая может показаться немного пугающей сначала, но я обещаю вам, это будет так же весело, как найти extra картофель фри в нижней части вашего заказа. Мы говорим о Strict Mode в JavaScript!

JavaScript - Strict Mode

Strict Mode в JavaScript

Представьте, что вы учитесь водить. Сначала ваш инструктор может быть lenient с вами, позволяя вам прощать мелкие ошибки. Но по мере вашего прогресса, они начинают быть строже, указывая на каждую мелкую ошибку. Exactly так и делает Strict Mode в JavaScript – это как строгий инструктор для вашего кода!

Strict Mode - это функция, введенная в ECMAScript 5 (ES5), которая позволяет вам placing a program, или функцию, в "строгий" контекст выполнения. Этот строгий контекст prevents certain действия от быть выполненными и выбрасывает больше исключений.

Включение Strict Mode

Включение Strict Mode так же просто, как pie (и кто не любит pie?). Вам просто нужно добавить строку "use strict" в начале вашего скрипта или функции. Давайте посмотрим, как это выглядит:

"use strict";

// Ваш код здесь

Вот и все! Вы только что включили Strict Mode для всего вашего скрипта. Но помните, это как надевание ремня безопасности – это работает только если вы делаете это в начале!

Why Use the Strict Mode?

Теперь вы можете задаться вопросом: "Why бы мне хотелось сделать JavaScript строже? Разве он уже не Enough сложен?" Ну, мой молодой падаван, Strict Mode на самом деле здесь, чтобы помочь вам. Вот несколько причин, почему вы можете захотеть использовать его:

  1. Он ловит распространенные ошибки кодирования, выбрасывая исключения.
  2. Он предотвращает или выбрасывает ошибки, когда выполняются относительно "небезопасные" действия.
  3. Он отключает функции, которые являются запутанными или плохо продуманными.
  4. Он делает ваш код более безопасным.
  5. Он помогает вам писать "чище" код.

Давайте рассмотрим простой пример:

"use strict";

x = 3.14; // Это вызовет ошибку

Без Strict Mode, JavaScript бы счастливо создал глобальную переменную x. Но с Strict Mode, он выбрасывает ошибку, потому что вы забыли объявить переменную с let, const, или var. Это как иметь друга, который всегда напоминает вам завязать шнурки!

Strict Mode в глобальном контексте

Когда вы используете Strict Mode в глобальном контексте (вне любой функции), он применяется ко всему скрипту. Вот пример:

"use strict";

function doSomething() {
x = 10; // Это вызовет ошибку
}

doSomething();

В этом случае, даже несмотря на то, что x = 10 находится внутри функции, это все равно вызовет ошибку, потому что Strict Mode включен для всего скрипта.

Strict Mode в локальном контексте

Вы также можете использовать Strict Mode внутри определенной функции. Это полезно, когда вы работаете над большим проектом и хотите применить Strict Mode только к определенной части вашего кода. Вот как это сделать:

function strictFunction() {
"use strict";
// Эта функция находится в strict mode
y = 20; // Это вызовет ошибку
}

function nonStrictFunction() {
// Эта функция не находится в strict mode
z = 30; // Это не вызовет ошибку
}

strictFunction();
nonStrictFunction();

В этом примере, strictFunction() выбросит ошибку, но nonStrictFunction() не будет. Это как если бы у вас было объявление "No Shoes, No Shirt, No Service" только для одной комнаты в вашем доме!

Ошибки, которые вы не должны совершать в strict mode

Теперь давайте поговорим о некоторых распространенных ошибках, которые Strict Mode будет ловить. Думайте о них как о "не делайте это" в Strict Mode:

Ошибка Пример Объяснение
Использование неопределенных переменных x = 3.14; Переменные должны быть объявлены с помощью let, const, или var
Использование delete для переменных delete x; Вы не можете удалять переменные, функции или аргументы
Повторяющиеся имена параметров function f(a, a, b) {} Повторяющиеся имена параметров не допускаются
Использование octal syntax var n = 023; Octal syntax не допускается
Запись в неудаляемое свойство var obj = {}; Object.defineProperty(obj, "x", { value: 0, writable: false }); obj.x = 3.14; Запись в неудаляемые свойства не допускается
Использование оператора with with (Math) { x = cos(2); } Оператор with не допускается

Давайте рассмотрим более сложный пример, который демонстрирует некоторые из этих правил:

"use strict";

function calculateArea(radius, radius) {
// Повторяющиеся имена параметров - это вызовет ошибку
with (Math) {
// Использование оператора `with` - это вызовет ошибку
return PI * radius * radius;
}
}

var result = calculateArea(5, 5);
console.log(result);

Этот код имеет две проблемы: повторяющиеся имена параметров и использование оператора with. Strict Mode Catch оба из этих и выбросит ошибки, помогая вам писать лучшее, более maintainable код.

В заключение, Strict Mode как having a super-smart, slightly pedantic friend looking over your shoulder as you code. Это может показаться раздражающим сначала, но это здесь, чтобы помочь вам стать лучшим разработчиком JavaScript. Так что принимайте его, используйте его, и смотрите, как качество вашего кода взлетает!

Помните, в мире программирования, быть strict не о том, чтобы быть mean – это о том, чтобы быть clear, precise, и error-free. Так что идите и кодируйте строго, мои друзья!

Credits: Image by storyset