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 variable

co 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 🙂.

Dyrektywa "use strict" w języku JavaScript

"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 😄!

PODOBNE ARTYKUŁY