Tags: JavaScript

Co robi "use strict" w JavaScript i jakie jest tego uzasadnienie?

`"use strict"` jest dyrektywą (directive) w języku JavaScript, która wprowadza restrykcyjny tryb działania dla kodu JavaScript. Wprowadza ona pewne zasady i ograniczenia, które mają na celu zwiększenie bezpieczeństwa i poprawienie jakości kodu. Oto, co robi `"use strict"` i jakie jest jego uzasadnienie:

Zmienne muszą być deklarowane

W restrykcyjnym trybie, wszystkie zmienne muszą być deklarowane za pomocą `var`, `let` lub `const` przed ich użyciem. Unika to tworzenia nieświadomych zmiennych globalnych i pomaga uniknąć błędów.

Zakaz deklaracji zmiennych o nazwach "reserved words"

Nie można deklarować zmiennych o nazwach, które są zarezerwowane w języku JavaScript (np. `let`, `const`, `function`, `class`, `return`, itp.).

Błąd przy przypisaniu do niezmiennej zmiennej

W przypadku użycia `const`, próba ponownego przypisania zmiennej spowoduje błąd.

Błąd przy modyfikacji niezmiennej właściwości obiektu

Jeśli próbujesz modyfikować niezmienne właściwości obiektu (np. `const obj = { prop: 1 }; obj.prop = 2;`), otrzymasz błąd.

Nie można używać niezadeklarowanych zmiennych

Użycie niezadeklarowanej zmiennej spowoduje błąd.

Zakaz usunięcia zmiennych, funkcji, właściwości obiektów

W restrykcyjnym trybie, nie można używać operacji `delete` do usuwania zmiennych, funkcji czy właściwości obiektów.

Słowo kluczowe `this` w funkcjach anonimowych odnosi się do `undefined`

W normalnym trybie, `this` w funkcji anonimowej odnosi się do globalnego obiektu (np. `window` w przeglądarce), co może prowadzić do błędów. W trybie restrykcyjnym `this` w funkcji anonimowej jest ustawiane na `undefined`.

Błąd przy próbie użycia zastrzeżonych słów w właściwościach obiektu

W restrykcyjnym trybie, próba użycia zastrzeżonych słów jako nazw właściwości obiektu spowoduje błąd.

Lepsza wydajność i optymalizacja

W trybie restrykcyjnym niektóre optymalizacje i optymalizacje JIT (Just-In-Time) mogą być bardziej efektywne, co może przyspieszyć działanie kodu.

Uzasadnienie użycia `"use strict"` polega na tym, że pomaga ona wykrywać i eliminować błędy oraz niezależnie piszącym kod programistom unika wielu potencjalnych pułapek i problemów w języku JavaScript. Działa jak narzędzie do kontroli jakości kodu i jest zalecana do stosowania w nowych projektach i istniejącym kodzie, aby poprawić jego jakość i niezawodność.