Лекция
Привет, сегодня поговорим про строгий режим "use strict", обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое строгий режим "use strict" , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).
"use strict"
use strict
?Современная спецификация языка содержит ряд несовместимых изменений, по сравнению со старым стандартом.
Чтобы не ломать существующий код, они, в основном, включаются при наличии специальной директивы use strict
. Эта директива не поддерживается IE9-.
"use strict"
Директива выглядит как строка "use strict";
или 'use strict';
, и может стоять в начале скрипта, либо в начале функции, например:
1 |
"use strict" ; |
2 |
3 |
// этот код будет работать по стандарту ES5 |
4 |
... |
Например, присвоение переменной без объявления в старом стандарте было допустимо, а в современном — нет.
Поэтому следующий код выдаст ошибку:
1 |
"use strict" ; |
2 |
3 |
x = 5; // error: x is not defined |
Директиву нужно указывать до кода, иначе она не сработает:
1 |
var a; |
2 |
3 |
"use strict" ; |
4 |
5 |
x = 5; // ошибки не будет, строгий режим не включен |
Допустим, код работает только в старом режиме, но мы хотим написать новые функции, используя современный стандарт.
Директиву "use strict";
можно указать в начале функции, тогда она будет действовать только в ней.
Например, в коде ниже используются переменные без объявления. Об этом говорит сайт https://intellect.icu . Но ошибка будет выведена только при запуске функции, так как именно она работает в строгом режиме:
01 |
function sayHi(person) { |
02 |
"use strict" ; |
03 |
04 |
message = "Привет, " + person; // error: message is not defined |
05 |
//... |
06 |
} |
07 |
08 |
person = "Вася" ; |
09 |
10 |
sayHi(person); |
Отменить действие "use strict"
никак нельзя.
Если директива указана на уровне скрипта, то действует и на все функции.
use strict
?Строгий режим дает две вещи:
Все это хорошо.
Но основная проблема при использовании этой директивы — поддержка браузеров IE9-, которые игнорируют use strict
и работают только в старом стандарте.
Действительно, предположим, что мы, используя эту директиву, разработали код в Chrome. Все работает… Однако, вероятность ошибок при этом в IE9- выросла! Так как там поддерживается только старый стандарт, возможны ошибки совместимости. А отлаживать код, чтобы найти эти ошибки, в IE9- намного менее приятно, чем в Chrome.
Тем не менее, строгий режим — это наше будущее. Поэтому его лучше использовать. Но при этом нужно очень хорошо знать отличия в работе JavaScript между старым и новым режимом, чтобы код, который вы напишете, не «ломался» при запуске в режиме старого стандарта.
К сожалению, в одной статье не просто дать все знания про строгий режим "use strict". Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое строгий режим "use strict" и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Из статьи мы узнали кратко, но содержательно про строгий режим "use strict"
Комментарии
Оставить комментарий
Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)