Узак убакыт бою, JavaScript шайкештик көйгөйлөрү жок өнүккөн. Тилге жаңы функциялар кошулуп турган, ал эми эски функционалдуулук өзгөргөн эмес.
Бул ыкманын артыкчылыгы - болгон код иштей берген. Ал эми терс жагы - JavaScript жаратуучуларынан кабыл алынган ар кандай ката же кемчиликтүү чечим тилде түбөлүккө тыгылып калган.
Бул ECMAScript 5 (ES5) пайда болгонго чейин 2009-жылга чейин болгон. Ал тилге жаңы функцияларды кошуп, айрымдарын өзгөрттү. Эски коддун иштеши үчүн, мындай өзгөртүүлөрдүн көбү демейки боюнча өчүрүлгөн. Андыктан биз аларды атайын "use strict"
нускоонун жардамы менен иштетишибиз керек.
Нускоо саптай көрүнөт: "use strict"
же 'use strict'
. Ал скрипттин башында жайгашканда, бүтүн скрипт "заманбап" жол менен иштейт.
Мисалы:
"use strict";
// бул код заманбап режиминде иштейт
...
Жакында биз функцияларды (буйруктарды топтоонун жолун) үйрөнөбүз, андыктан алдын ала "use strict"
функциянын башына коюлушу мүмкүн экенин белгилеп кетели. Муну кылгандан кийин катуу режими ошол функцияда гана иштейт. Бирок, адатта, адамдар аны бүт скрипт үчүн колдонушат.
Сураныч, скрипттериңиздин жогору жагында `"use strict"` турганын текшериңиз, антпесе катуу режими иштетилбей калышы мүмкүн.
Бул жерде катуу режими иштетилген эмес:
```js no-strict
alert("some code");
// төмөндөгү "use strict" көңүлдөнбөйт - ал жогоруда болушу керек
"use strict";
// катуу режими активдештирилген эмес
```
`"use strict"`'тин жогору жагында комментарийлер гана жазылышы мүмкүн.
```warn header="use strict
'ти жокко чыгарууга эч кандай жол жок"
Кыймылдаткычты эски абалына кайтарган `"no use strict"` сыяктуу нускоолор жок.
Катуу режимге киргени менен аны жокко чыгарууга эч кандай жол жок.
## Браузер консолу
Кодду жүргүзүү үчүн [иштеп чыгуучунун консолун](info:devtools) колдонгонуңузда, анда `use strict` демейки боюнча өчүрүлгөнүн эске алыңыз.
Кээде, `use strict` колдонулганда, сиз туура эмес жыйынтыктарды алышыңыз мүмкүн.
Ошондо, консолдо чындыгында кантип `use strict`'ти колдонсо болот?
Сиз бир нече саптарды киргизүү үчүн `key:Shift+Enter` колдонуп, жогорку сапка `use strict` деп жазсаңыз болот:
```js
'use strict'; <жаңы сапка өтүү үчүн Shift+Enter>
// ...сиздин кодуңуз
<жүргүзүү үчүн Enter>
Көпчүлүк браузерлерде, анын ичинде Chrome жана Firefox, бул иштейт.
Эгер андай болбосо, мис. эски браузерде, use strict
'ти камсыз кылуунун начар, бирок ишенимдүү жолу бар. Аны төмөнкү каптамага киргизиңиз:
(function() {
'use strict';
// ...сиздин кодуңуз...
})()
Суроо анык угулушу мүмкүн, бирок андай эмес.
Бирөөсү скрипттерди "use strict"
менен баштоону сунуштайт... Бирок сонунураак аргасы бар.
Заманбап JavaScript катуу режимди автоматтык түрдө иштеткен "класстарды" жана "модулдарды" - өркүндөтүлгөн тил түзүмдөрүн колдойт (албетте, биз аларга жетебиз). Демек, аларга use strict
нускоосун кошуунун кажети жок.
Жыйынтыктайлы: скрипттериңиздин башында "use strict";
кошуулуусу сунушталат. Кийинчерээк, сиздин бардык кодуңуз класстардан жана модулдардан турганда, нускоону өткөрүүгө болот.
Азырынча биз use strict
жөнүндө жалпысынан гана билип алдык.
Кийинки бөлүмдөрдө, тилдин өзгөчөлүктөрүн үйрөнгөнүбүздө, биз катуу жана стандарттуу режимдердин ортосундагы айырмачылыктарды көрөбүз. Бактыга жараша, алар көп эмес жана алар биздин жашообузду жакшыртат.
Бул колдонмодогу бардык мисалдар, эгерде (өтө сейрек) башкача белгиленбесе, катуу режимин божомолдойт.