Зачем нужен use strict в js
"use strict" в JavaScript — это директива, которая вводит строгий режим выполнения кода. Она была добавлена в ECMAScript 5 и служит для того, чтобы сделать код более безопасным, предсказуемым и предотвращать возможные ошибки. Строгий режим изменяет поведение JavaScript, делая язык менее гибким, но более строгим, что помогает избегать некоторых распространённых ошибок.
Зачем нужен "use strict":
Предотвращает использование необъявленных переменных. В обычном режиме, если вы случайно напишите переменную без использования var, let или const, JavaScript создаст глобальную переменную. В строгом режиме это вызовет ошибку.
Пример:
javascript
// Без 'use strict'
x = 10; // Не вызовет ошибки, но создаст глобальную переменную.
// С 'use strict'
'use strict';
x = 10; // Вызовет ошибку: x is not defined.
Запрещает удаление свойств объектов или переменных. Строгий режим предотвращает удаление переменных и функций с помощью оператора delete.
Пример:
javascript
'use strict';
let obj = {name: 'John'};
delete
obj.name; // Ошибка: нельзя удалить свойство объекта.
Запрещает дублирование имён параметров функций. В строгом режиме вы не можете объявлять параметры функции с одинаковыми именами, что в обычном режиме допускается.
Пример:
javascript
// Без 'use strict'
function sum(a, a, c) {
return a + c;
} // Допустимо в обычном режиме, но может привести к непредсказуемым результатам.
// С 'use strict'
'use strict';
function sum(a, a, c) {
return a + c;
} // Ошибка: дублирование параметров.
Запрещает использование зарезервированных слов как имён переменных. В строгом режиме вы не можете использовать зарезервированные слова, такие как implements, interface, let, package, protected, static, yield и другие, в качестве переменных.
Пример:
javascript
'use strict';
let public = 10; // Ошибка: использование зарезервированного слова.
Сужает контекст вызова функций. В строгом режиме this в функциях, вызываемых без контекста (например, не как метод объекта), не будет автоматически ссылаться на глобальный объект (window в браузере). Вместо этого this будет undefined.
Пример:
javascript
// Без 'use strict'
function showThis() {
console.log(this); // Выведет глобальный объект (window в браузере).
}
// С 'use strict'
'use strict';
function showThis() {
console.log(this); // Выведет undefined.
}
Когда и где использовать "use strict":
В глобальном контексте: если добавить директиву "use strict" в начало скрипта, строгий режим будет применён ко всему файлу.
Внутри функций: можно включить строгий режим только для отдельных функций, если добавить директиву в начале тела функции.
Заключение:
Использование "use strict" помогает улучшить качество кода, предотвращая некоторые потенциальные ошибки и заставляя разработчика следовать более строгим правилам, что улучшает читабельность и предсказуемость кода.
... и еще
"use strict" — это директива в JavaScript, которая включает строгий режим (strict mode). Строгий режим вводит изменения в поведение JavaScript, делая его более безопасным и предсказуемым. Он помогает разработчикам избегать некоторых распространённых ошибок и улучшает производительность кода.
Зачем нужен строгий режим?
Предотвращение неявных ошибок: В строгом режиме многие ошибки, которые в обычном режиме проходят незаметно, становятся видимыми и приводят к выбросу исключений. Это помогает быстрее обнаруживать и исправлять ошибки.
Безопасность: Строгий режим запрещает использование некоторых потенциально опасных конструкций, что делает код более безопасным.
Улучшенная оптимизация: Некоторые механизмы оптимизации JavaScript-движков работают эффективнее со строгим режимом.
Запрет некоторых устаревших возможностей: Строгий режим отключает некоторые устаревшие или небезопасные функции и синтаксис.
Примеры использования
1. Запрет неявного создания глобальных переменных
Без строгого режима:
javascript
function foo() {
x = 10; // Создаётся глобальная переменная x
}
foo();
console.log(x); // 10
Со строгим режимом:
javascript
"use strict";
function foo() {
x = 10; // Ошибка: x не объявлена
}
foo();
В строгом режиме попытка присвоить значение переменной без её объявления приводит к ошибке, предотвращая неявное создание глобальных переменных.
2. Запрет дублирующих имен параметров
Без строгого режима:
javascript
function sum(a, a) {
return a + a;
}
console.log(sum(1, 2)); // 4
Со строгим режимом:
javascript
"use strict";
function sum(a, a) {
// SyntaxError: Дублирующее имя параметра не разрешено в строгом режиме
return a + a;
}
Строгий режим запрещает использование дублирующих имён параметров функций.
3. Запрет удаления неизвлекаемых свойств
Без строгого режима:
javascript
var obj = {};
delete obj.nonExistentProperty; // Возвращает true, ничего не удаляя
Со строгим режимом:
javascript
"use strict";
var obj = {};
delete obj.nonExistentProperty; // Возвращает true, но строгий режим может предотвратить другие потенциальные ошибки
Хотя в данном примере разница не заметна, в строгом режиме некоторые операции, которые в обычном режиме были бы игнорируемыми, теперь могут приводить к ошибкам.
4. Защита от дублирующих свойств объекта
Без строгого режима:
javascript
var obj = {
prop: 1,
prop: 2
};
console.log(obj.prop); // 2
Со строгим режимом:
javascript
"use strict";
var obj = {
prop: 1,
prop: 2 // SyntaxError: Дублирующее имя свойства
};
Строгий режим предотвращает создание объектов с дублирующимися свойствами, что помогает избежать непредвиденного поведения.
Как включить строгий режим
Строгий режим можно включить для всей скрипта или для отдельных функций.
Для всего скрипта:
javascript
"use strict";
function foo() {
// Строгий режим активен здесь
}
Только для функции:
javascript
function foo() {
"use strict";
// Строгий режим активен только внутри этой функции
}
Заключение
Использование "use strict" рекомендуется для всех новых проектов, так как оно способствует написанию более чистого и безопасного кода. Строгий режим помогает избегать многих распространённых ошибок и делает код более предсказуемым, что особенно важно в больших и сложных приложениях.
Нет комментариев