Pisząc kod w języku JavaScript mogłeś(-aś) dostrzec nietypową instrukcję: "use strict" 🔥. Niniejszy materiał z języka JavaScript wyjaśni znaczenie tej dyrektywy w kodzie źródłowym oraz jakie przynosi konsekwencje dla działania programu 🧠! Zapraszam 😊!
WYJAŚNIAM CO OZNACZA "USE STRICT" W JĘZYKU JAVASCRIPT!
Na początek wyjaśnię samo hasło, a potem przejdziemy do ukazania przykładowego kodu źródłowego 🙂.
Co oznacza "use strict" w języku JavaScript?
"use strict" w języku JavaScript, to dyrektywa "włączająca" specjalny tryb obsługi składni fragmentu kodu, w którym się znajduje (skryptu bądź tylko jednej z funkcji) 💡. Choć nie ma na to żadnego formalnego hasła, to powszechnie określa się to jako "strict mode", czyli "tryb restrykcyjny" 💥.
Tryb restrykcyjny oznacza w praktyce, że nasz kod źródłowy będzie analizowany przez interpreter w sposób bardziej bezwzględny tzn. wszystko to, co było nie do końca poprawne składniowo, lecz było tolerowane, od tej chwili będzie uznawane za błąd składniowy uniemożliwiający dalsze przetwarzanie instrukcji ⛔.
Tu jest ciekawostka co do trybów w tym języku 😮!
W jakim trybie jest przetwarzany kod w języku JavaScript bez użycia "use strict"?
Jeżeli nie korzystamy z dyrektywy "use strict", to wówczas wszystko działa w trybie "domyślnym", określanym zabawnie jako "sloppy mode", co można by przetłumaczyć jako "tryb niechlujny" 😆. Prawdopodobnie takie określenie miało oznaczać "przymykanie oczu" przez interpreter na niepoprawność pewnych instrukcji 😉.
Co przynosi korzystanie z "use strict" w języku JavaScript?
"use strict" ma na celu zwiększenie bezpieczeństwa kodu i chyba na tym się kończą zalety jego stosowania 😄. Konkretniej, traktuje wszelkie niepoprawne i potencjalnie niebezpieczne instrukcje jak błędy składniowe np. zapobiega przypisywaniu wartości zmiennym niezadeklarowanym wcześniej 🚫.
Pełne zestawienie przypadków uznawanych przez tryb restrykcyjny za niedopuszczalne, znajdziesz w dokumentacji Mozilla 📖.
Mamy za sobą teorię, przyszedł czas na praktykę 🎯! Przedstawię teraz 2 kody źródłowe ukazujące jeden z przypadków niedozwolonych instrukcji: operowanie na niezadeklarowanej wcześniej zmiennej 💥! Nie będą niczym się różniły w kontekście instrukcji ℹ️. Jedyną różnicą będzie korzystanie z dyrektywy "use strict" w drugim przykładzie 🙂.
Przykład kodu źródłowego z użyciem "use strict"
Oto przykład bez użycia "use strict" 👇:
my_variable = 60;
console.log(my_variable);Powyższy kod uruchomi się bez problemu 👍. Przypisujemy wartość zmiennej, która w ogóle nie została zadeklarowana wcześniej, a następnie przy użyciu wywołania metody "console.log", wypisujemy w konsoli jej aktualną wartość ✍. To jest przykład jak NIE powinno się obsługiwać zmiennych, tak na marginesie 😊.
A niżej jest to samo, tylko już w trybie restrykcyjnym 👇:
"use strict";
my_variable = 60;
console.log(my_variable);To spowoduje błąd ❌! Wtedy jego treść powinna brzmieć 👇:
assignment to undeclared variableco jednoznacznie wskazuje na niedopuszczalną sytuację, o której napisałem 🛑. W JavaScript nie wolno korzystać ze zmiennych, które nie zostały wcześniej zadeklarowane ⛔. Konkretnie, chodzi o jeden drobny szczegół 👇:
let my_variable;Jeżeli umieścisz tę instrukcję przed przypisaniem wartości, wtedy program zadziała poprawnie jak poprzedni ✅. W tym właśnie celu stosuje się dyrektywę "use strict" w języku JavaScript 🎯!
Czy można zastosować "use strict" tylko do części skryptu?
"use strict" nie musi obejmować całego skryptu. To jest przykład, w którym tryb restrykcyjny dotyczy tylko jednej funkcji 👇:
function doSomething() {
"use strict";
my_inner_variable = 20;
console.log(my_inner_variable);
}
my_variable = 60;
console.log(my_variable);
doSomething();Powyższy program wywoła błąd, natomiast nie w momencie przypisywania wartości niezadeklarowanej zmiennej poza funkcją, a wewnątrz niej 😮! Zobacz, że "use strict" znajduje się w środku funkcji, zatem obejmie tylko jej blok 🔥. Reszta jest już poza działaniem dyrektywy 🙂.
![]() |
"use strict" to dyrektywa podnosząca bezpieczeństwo kodu źródłowe poprzez niedopuszczanie do wykonania instrukcji uznawanych za niewłaściwe bądź mogące powodować późniejsze błędy.
Więcej nie trzeba na ten temat pisać, a więc zamykam materiał i teraz już wiesz o co się rozchodzi 😄!
