JavaScript je odpouštějící jazyk. Některé jeho syntaxe jsou nepovinné a jazyk se zotavuje z chyb s větší grácií než mnoho jiných. Ale toto držení za ruku přichází s penalizací: může být snazší zavádět chyby a nekonzistentní kód je hůře čitelný.
Naštěstí, pokud chcete cvičit více disciplíny, existuje snadný způsob, jak toho dosáhnout: přísný režim. Přísný režim je způsob, jak požádat JavaScript, aby reagoval rozhodněji, když narazí na problémy ve vašem kódu.
Co je přísný režim?
Několik jazyků používá koncept přísného režimu: režim, který vyhodnocuje a spouští kód přísněji. Možná znáte HTML striktní doctype, který zavrhuje určité prvky a atributy.
Perl, další interpretovaný skriptovací jazyk, má již dlouho svůj vlastní striktní režim. Tento režim zakazuje určité typy nebezpečných výrazů.
Jak mohu použít přísný režim v JavaScriptu?
Uvnitř skriptu umístěte příkaz „použij přísné“ přímo nahoře před jakékoli další příkazy:
// celý tento skript bude v přísném režimu
'použít přísné';
Všimněte si, že před něj můžete vložit komentář, ale žádné výroky. Přísný režim můžete povolit v souboru JavaScript nebo na začátku bloku skriptu v souboru HTML. Můžete také povolit přísný režim na bázi funkce po funkci:
function strict() {
// Syntaxe přísného režimu na úrovni funkcí
'použít přísné';
return "Tato funkce je přísná";
}
function loose() {
return "Tato funkce NENÍ přísná";
}
Jakmile povolíte přísný režim, nezapomeňte svůj kód otestovat. Pokud pracujete s webem, otevřete a konzole JavaScript, takže můžete identifikovat jakékoli nové chyby.
Co dělá přísný režim JavaScriptu?
Stručně řečeno, striktní režim bude méně shovívavý k určitým typům problematického kódu. Spíše než ignorování problémů a pokračování v provádění určité chyby skript zastaví. To je často bezpečnější než pokračování za nežádoucích okolností.
Zabraňuje náhodným globálům
Nejlepším příkladem, před kterým přísný režim chrání, je vytváření náhodných globálních proměnných. Při normálním provádění tento kód:
myVar = 17;
Vytvoří vlastnost s názvem myVar na globálním objektu za předpokladu, že jste dříve nedeklarovali myVar. Ve webovém prohlížeči je globálním objektem obvykle okno:
console.log (window.myVar);
>> 17
Pokud však zahrnete příkaz „použij přísné“, zobrazí se v konzole chyba, něco jako:
Uncaught ReferenceError: myVar není definována
Důvodem, proč je to tak užitečné, je to, že zachytí běžný případ překlepu. Je snadné zadat nesprávný název proměnné a mnoho jazyků by nám takovou chybu zachytilo.
Ale JavaScript ve výchozím nastavení jednoduše převezme rozsah globálního objektu a pokračuje, jako by se nic nedělo. Některý kód může záměrně záviset na tomto chování, což je něco, čeho byste si měli být vědomi, když se rozhodnete použít přísný režim.
Viz také: Jak udržet kód čistý pomocí zapouzdření objektu
Vyjadřuje selhání explicitně
Některé chování v JavaScriptu selže, ale děje se tak tiše. O takových chybách možná nevíte, pokud je konkrétně nezkontrolujete. Například NaN je speciální vlastnost globálního objektu, která představuje neplatné číslo. Tato vlastnost je pouze pro čtení, ale přesto do ní můžete zkusit zapisovat:
NaN = 2;
>> 2
Ale i když to vypadá, že se úkol povedl, ne:
NaN
>> NaN
V přísném režimu se zobrazí skutečná chyba, která vám řekne, že nemůžete přiřadit NaN. Tento kód používá funkci, která vám umožňuje předvést přísný režim v konzole:
javascript
function badNaN() { "použít striktní"; okno. NaN = 2; }
>> nedefinováno
badNan()
>> Uncaught TypeError: Nelze přiřadit vlastnost pouze pro čtení 'NaN' objektu '#'
v badNaN (:1:46)
v :1:1
Toto je klasický příklad, který ukazuje, že i když nevědomost může být blažeností, je někdy lepší vědět, jestli se něco nedaří.
Varuje před duplicitními parametry
Poslední příklad se zabývá málo známou funkcí JavaScriptu. Možná vás překvapí, že názvy parametrů nemusí být jedinečné:
function dupeParam (a, a, c) { console.log (a); }
>> nedefinováno
dupeParam (2, 4, 8)
>> 4
Všimněte si, že JavaScript přiřadí nejnovější hodnotu duplicitnímu parametru. Nyní toto chování není příliš užitečné. Ve skutečnosti by pro JavaScript bylo užitečnější, kdyby nám řekl, že jde o chybu, a přesně to dělá přísný režim:
function dupeParam (a, a, c) { "použít přísné"; }
<< Uncaught SyntaxError: Duplicitní název parametru není v tomto kontextu povolen
Použijte přísný režim pro extra jistotu kódu
Osvědčené postupy a prostředky k jejich prosazování jdou ruku v ruce. V některých kontextech, jako je profesionální programátorská role, budete chtít uplatnit co nejvíce disciplíny. I když právě pracujete na hobby open-source projektu, správce může upřednostňovat použití přísného režimu jako standardu.
Nakonec je to na vás, ale je užitečné vědět, že je k dispozici pomocná ruka. Jako programátor byste měli vždy hledat osvědčené postupy a co můžete udělat pro jejich prosazení.
Váš kód by měl být jasný a snadno udržovatelný. Zde je několik dalších principů programování, které vám pomohou uklidit váš čin.
Přečtěte si další
- Programování
- JavaScript
- Vývoj webu
- Programovací jazyky
Bobby je technologický nadšenec, který většinu dvou desetiletí pracoval jako softwarový vývojář. Je nadšený pro hraní her, pracuje jako šéfredaktor časopisu Switch Player Magazine a je ponořen do všech aspektů online publikování a vývoje webu.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem