Co to jest 'use strict' w JavaScript? 🧐

JavaScript

readTime

4 min

Co to jest 'use strict' w JavaScript? 🧐

Jeśli programujesz w JavaScript, być może natknąłeś się na dyrektywę 'use strict'.

Ale czym dokładnie jest tryb ścisły (strict mode) i dlaczego warto go używać?

W tym artykule wyjaśnię Ci, co to jest use strict, jak go włączyć i jakie ma znaczenie dla Twojego kodu.

Zaczynajmy! 🚀

Wprowadzenie do 'use strict' 🎯

JavaScript jest językiem, który ewoluował przez lata, zachowując wsteczną kompatybilność.

Oznacza to, że nowe wersje języka starają się nie wprowadzać zmian, które mogłyby złamać działanie starego kodu. Jednak z czasem okazało się, że pewne decyzje podjęte na początku istnienia języka nie były idealne.

Aby wprowadzić ulepszenia i poprawić bezpieczeństwo kodu, wprowadzono tryb ścisły (strict mode) w ECMAScript 5 (ES5).

Tryb ścisły zmienia sposób interpretacji kodu JavaScript, eliminując pewne błędy i niedoskonałości.

Jak włączyć tryb ścisły? 🔒

Aby włączyć tryb ścisły, musisz na początku swojego skryptu umieścić dyrektywę:

javascript
"use strict";

To prosta dyrektywa, która informuje interpreter, że kod powinien być wykonywany w trybie ścisłym.

Pamiętaj, że dyrektywa musi znajdować się na samym początku pliku lub funkcji, przed innymi instrukcjami.

Jeśli umieścisz ją gdzieś w środku, nie zadziała.

Przykład:

javascript
"use strict";

function test() {
  // Twój kod w trybie ścisłym
}

Możesz również włączyć tryb ścisły tylko dla konkretnej funkcji, umieszczając dyrektywę na jej początku:

javascript
function test() {
  "use strict";
  // Kod wewnątrz funkcji działa w trybie ścisłym
}

Co zmienia tryb ścisły w JavaScript? 🔄

Tryb ścisły wprowadza szereg zmian w zachowaniu JavaScriptu, które pomagają eliminować ukryte błędy i poprawiają bezpieczeństwo kodu.

Oto niektóre z nich:

1. Zabrania używania niezadeklarowanych zmiennych

W trybie ścisłym nie możesz używać zmiennych bez ich wcześniejszej deklaracji.

Jeśli spróbujesz przypisać wartość do niezadeklarowanej zmiennej, otrzymasz błąd.

Przykład:

javascript
"use strict";

x = 10; // Błąd: x is not defined

W standardowym trybie, powyższy kod utworzyłby zmienną globalną, co może prowadzić do problemów w większych projektach.

2. Zapobiega nadpisywaniu właściwości tylko do odczytu

Tryb ścisły zabrania nadpisywania wartości, które są oznaczone jako tylko do odczytu.

Przykład:

javascript
"use strict";

const obj = {};
Object.defineProperty(obj, "prop", {
  value: 42,
  writable: false,
});

obj.prop = 100; // Błąd: nie można nadpisać właściwości tylko do odczytu

3. Eliminuje ciche błędy

W standardowym trybie pewne błędy są ignorowane lub traktowane 'po cichaczu' lub z przymróżeniem oka.

Tryb ścisły sprawia, że takie błędy są jawnie zgłaszane jako wyjątki.

4. Zabrania duplikowania nazw parametrów w funkcjach

W trybie ścisłym nie możesz używać tych samych nazw dla różnych parametrów funkcji.

Przykład:

javascript
"use strict";

function sum(a, a) {
  // Błąd: duplikacja nazwy parametru
  return a + a;
}

5. Blokuje użycie słów kluczowych zarezerwowanych dla przyszłych wersji

Niektóre słowa są zarezerwowane dla przyszłych wersji języka, np. let, class, enum.

Tryb ścisły zabrania ich używania jako nazw zmiennych czy parametrów.

Dlaczego warto używać 'use strict'? 🤔

Używanie trybu ścisłego pomaga:

  • Eliminować ukryte błędy – dzięki bardziej rygorystycznym zasadom.
  • Poprawiać bezpieczeństwo kodu – zapobiega przypadkowemu tworzeniu zmiennych globalnych.
  • Zwiększać wydajność – niektóre silniki JavaScript mogą optymalizować kod w trybie ścisłym.
  • Przygotować się na przyszłe wersje języka – unikając użycia zarezerwowanych słów.

Kiedy 'use strict' nie jest domyślnie włączony? ⚠️

Tryb ścisły nie jest domyślnie włączony w JavaScripcie, aby zachować kompatybilność ze starszym kodem.

Oznacza to, że musisz samodzielnie dodać dyrektywę 'use strict' na początku swojego pliku lub funkcji, jeśli chcesz go używać.

W nowszych specyfikacjach języka, takich jak ECMAScript 6 (ES6) i późniejszych, moduły i klasy automatycznie działają w trybie ścisłym.

Czy 'use strict' wpływa na cały kod? 🌐

Jeśli umieścisz dyrektywę 'use strict' na początku pliku, cały kod w tym pliku będzie wykonywany w trybie ścisłym. Jeśli jednak umieścisz ją wewnątrz funkcji, tylko kod w tej funkcji będzie podlegał trybowi ścisłemu.

Przykład:

javascript
function oldFunction() {
  // Kod w standardowym trybie
}

function newFunction() {
  "use strict";
  // Kod w trybie ścisłym
}

Wyjątki i błędy w 'use strict' 🚨

W trybie ścisłym niektóre błędy, które wcześniej były ignorowane, teraz powodują wyjątki. Na przykład:

  • Próba usunięcia niezniszczalnej właściwości:

    javascript
    "use strict";
    
    delete Object.prototype; // Błąd
    
  • Próba nadpisania wartości NaN, Infinity, undefined:

    javascript
    "use strict";
    
    NaN = 123; // Błąd
    

Podsumowanie 📝

'use strict' w JavaScript to dyrektywa wprowadzająca tryb ścisły, który zmienia sposób interpretacji kodu przez silnik JavaScript.

Tryb ścisły pomaga eliminować ciche błędy, zwiększa bezpieczeństwo kodu i przygotowuje go na przyszłe wersje języka.

Kluczowe kwestie:

  • Aby włączyć tryb ścisły, umieść "use strict"; na początku pliku lub funkcji.
  • Pomaga unikać niezdeklarowanych zmiennych i innych potencjalnych problemów.
  • Nie jest domyślnie włączony, aby zachować kompatybilność ze starszym kodem.

JavaScript jest językiem, który stale się rozwija. Używanie 'use strict' to krok w kierunku pisania bardziej poprawnego i bezpieczniejszego kodu.

Powodzonka 😊👨‍💻

authorImg

Witek Pruchnicki

Z pasją dzielę się wiedzą o programowaniu i nie tylko na różne sposoby