Dlouhou dobu byl JavaScript vyvÃjen bez problémů s kompatibilitou. Do jazyka byly pÅidávány nové prvky, zatÃmco stará funkcionalita se nemÄnila.
MÄlo to tu výhodu, že se nerozbÃjel již existujÃcà kód. Nevýhodou vÅ¡ak bylo, že každá chyba nebo nedokonalé rozhodnutà tvůrců JavaScriptu zůstala v jazyce zakotvena navždy.
To platilo až do roku 2009, kdy se objevil ECMAScript 5 (ES5), který do jazyka pÅidal nové vlastnosti a upravil nÄkteré již existujÃcÃ. Aby starý kód nepÅestal fungovat, vÄtÅ¡ina tÄchto úprav je defaultnÄ vypnuta. MusÃte je výslovnÄ povolit speciálnà direktivou: "use strict".
âuse strictâ
Tato direktiva má podobu ÅetÄzce: "use strict" nebo 'use strict'. Když je umÃstÄna na zaÄátku skriptu, celý skript bude fungovat âmodernÃmâ způsobem.
PÅÃklad:
"use strict";
// tento kód funguje modernÃm způsobem
...
Brzy se nauÄÃme použÃvat funkce (způsob, jak seskupit pÅÃkazy), a tak s pÅedstihem zmÃnÃme, že "use strict" můžeme umÃstit i na zaÄátek funkce. Když to udÄláme, umožnÃme striktnà režim pouze v této funkci. VÄtÅ¡inou jej vÅ¡ak lidé použÃvajà pro celý skript.
ZajistÄte, aby "use strict" bylo hned na samém zaÄátku vaÅ¡eho skriptu, jinak nebude striktnà režim povolen.
Zde nenà striktnà režim povolen:
alert("nÄjaký kód");
// nÞe uvedený "use strict" se ignoruje -- musà být na zaÄátku
"use strict";
// striktnà režim nenà aktivován
Nad "use strict" nesmà být nic jiného než komentáÅe.
use strict nelze nijak zruÅ¡itNeexistuje žádná direktiva jako "no use strict", která by vrátila motoru výchozà chovánÃ. Jakmile jednou vstoupÃme do striktnÃho režimu, už nenà cesty zpÄt.
ProhlÞeÄová konzole
Když spustÃte kód ve vývojáÅské konzoli, nebÄžà automaticky ve striktnÃm režimu. NÄkdy to může ovlivnit i samotný výsledek.
Jak tedy vlastnÄ použÃvat use strict v konzoli?
Můžete zkusit vložit vÃce Åádků pomocà zkratky Shift+Enter a umÃstit use strict na zaÄátek, napÅÃklad takto:
'use strict'; <Shift+Enter pro nový Åádek>
// ...váš kód
<Enter pro spuÅ¡tÄnÃ>
Funguje to ve vÄtÅ¡inÄ prohlÞeÄů, konkrétnÄ ve Firefoxu a Chrome.
Pokud to nefunguje, napÅ. v nÄjakém starém prohlÞeÄi, existuje jeden nepÄkný, ale spolehlivý způsob, jak zajistit use strict. UmÃstÄte jej do tohoto obalu:
(function() {
'use strict';
// ...zde je váš kód...
})()
MÄli bychom použÃvat âuse strictâ?
OdpovÄÄ na tuto otázku se může zdát samozÅejmá, ale nenà tomu tak.
Můžeme vám doporuÄit, abyste zahajovali skripty s "use strict"⦠ale vÃte, co je fajn?
Modernà JavaScript podporuje âtÅÃdyâ a âmodulyâ â pokroÄilé jazykové struktury (urÄitÄ se k nim dostaneme), které použÃvajà use strict automaticky. Pokud je tedy použÃváme, nemusÃme direktivu use strict pÅidávat.
ProzatÃm tedy "use strict" použÃvejte; na zaÄátku vaÅ¡ich skriptů bývá vÃtaným hostem. PozdÄji, až budete mÃt celý svůj kód v tÅÃdách a modulech, jej můžete vypustit.
ProzatÃm tedy vÃme, jak obecnÄ use strict použÃvat.
Až se v dalÅ¡Ãch kapitolách nauÄÃme dalšà vlastnosti jazyka, poznáme rozdÃly mezi striktnÃm a starÅ¡Ãm režimem. NaÅ¡tÄstà jich nenà mnoho a ve skuteÄnosti nám spÃÅ¡e ulehÄujà práci.
VÅ¡echny pÅÃklady v naÅ¡em tutoriálu pÅedpokládajà striktnà režim, pokud nenà (velmi zÅÃdka) uvedeno jinak.
KomentáÅe
<code>, pro nÄkolik Åádků je obalte znaÄkou<pre>, pro vÃce než 10 Åádků vložte odkaz na pÃskoviÅ¡tÄ (plnkr, jsbin, codepenâ¦)