Use strict – JavaScript

Use strict – JavaScript

Ten artykuł przedstawia, czym jest use strict, jak działa, czy warto stosować, na te i inne pytania postaram się odpowiedzieć w niniejszym wpisie, zapraszam 🙂

Co to jest use strict

Stric mode to nowość, która została wprowadzona w ECMAScript 5, pozwala na wprowadzenia reguł w danym kontekście. Dany kontekst zapobiega pewnym akcjom, które generują wyjątki.

Use strict to zakres reguł, które muszą zostać przestrzegane w kodzie. Dzięki temu każdy programista pracujący na kodzie, który oparty jest o ten mechanizm, musi podobnie tworzyć oprogramowanie, aby nie powstawały błędy. Na przykład deklarując zmienną bez kluczowego słowa var, zadziała dla kodu, który nie ma mechanizmu use strict, jeżeli spróbujemy uruchomić kod, w którym mamy deklarację zmiennej bez słowa kluczowego var i z użyciem mechanizmu use strict wtedy aplikacja zgłosi błąd. Również mechanizm bardzo dobrze się sprawdza podczas tworzenia zmiennej, nadając jej nazwę przy użyciu słowa kluczowego jak na przykład: public, private itp.

"use strict";
y = 1 //ERROR, SCRIPT5042: Zmienna niezdefiniowana w trybie strict 
"use strict";
var y = 1 

Deklaracja use strict obejmuję wszystko, co znajduję się poniżej. Jeżeli stworzymy kod powyżej, to mechanizm nie będzie sprawdzać kodu powyżej use strict.

x = 1;
"use strict";
var y = 1 
console.log(x);// 1
console.log(y);// 1

Można również deklarować use strict wewnątrz funkcji, a poza funkcją zasady już nie będą sprawdzane, chyba że wcześniej w kodzie zawarliśmy tę instrukcję.

y = 1;
function test() {
  "use strict";
  var x = 0;
  return x;
}
console.log(y);
console.log(test());
y = 1;
function test() {
  "use strict";
  x = 0;//ERROR, SCRIPT5042: Zmienna niezdefiniowana w trybie strict
  return x;
}
console.log(y);
console.log(test());
"use strict";
var public = 1;//SCRIPT1050: Użycie identyfikatora w postaci słowa zastrzeżonego
// dla przyszłego użycia jest nieprawidłowe.
// Ta nazwa identyfikatora jest zastrzeżona w trybie strict.

Po co to jest

Aby mieć możliwość, wymuszenia na programistach pewnych reguł w kodzie, bądź chcemy zachować spójność kodu w całej aplikacji. Warto wspomnieć, że dzięki use strict zapobiegamy takim przypadkom jak:

  • Wyłapuje pewne typowe błędy, wpadki programisty i rzuca wyjątkiem.
  • Zapobiega lub wyrzuca błędy, gdy podejmowane są względnie „niebezpieczne” działania (takie jak uzyskanie dostępu do obiektu globalnego).
  • Wyłącza funkcje, które są mylące lub źle przemyślane.

po więcej informacji odsyłam tutaj.

Kiedy używać

Najlepiej, gdy pracujemy nad dużym projektem, wtedy ilość programistów jest spora, jak również rotacja między nimi występuje w różnych ilościach. Mechanizm use strict pozwala na nałożenie pewnych reguł w JavaScript, dzięki którym kod będzie spójny i nie będzie powielać błędów.

Podsumowanie

Jak widać, use strict jest mechanizmem bardzo przyjemnym i pomocnym przy budowaniu dużych aplikacji gdzie ilość programistów jest spora. Zaimplementowanie tych reguł jest bardzo łatwe i proste, wystarczą dwa słowa na początku pliku.

W tym artykule to wszystko, jeżeli macie jakieś pytania, sugestie, bądź własne przemyślenia na ten temat, to proszę, piszcie śmiało 🙂

 
Pozdro 🙂
 

3 komentarze

  1. > Dany kontekst zapobiega pewnym akcją, które generują wyjątki.

    (liczba pojedyncza) Ta akcja, tą akcją
    (liczba mnoga) Te akcje, tym akcjom
    Poprawnie byłoby: „zapobiega pewnym akcjom”.

    > Wyłapuję pewne typowe błędy, wpadki programisty i rzuca wyjątkiem.

    (pierwsza osoba) Ja wyłapuję,
    (trzecia osoba) mechanizm wyłapuje (bez ogonka).
    Poprawnie byłoby: „Wyłapuje pewne typowe błędy”.

  2. Ciekawą sprawą w kontekście „strict mode” jest również fakt, że jego stosowanie nie jest związane jedynie z wypracowaniem dobrych praktyk u większej grupy programistów. W wyniku stosowania strict mode, nasz kod staje się bardzie wydajny podczas wykonywania. Bardzo dobry przykład przedstawia test=> https://jsperf.com/strict-mode.

    Nie używanie i późniejsze użycie „strict mode” może spowodować dość daleko idące konsekwencje.
    Weźmy na ten przykład stary kod ES5:P, w którym pomijaliśmy jakiekolwiek standardy pisaliśmy go tak , żeby tylko zadziałał :P.
    W starym kodzie nie używaliśmy „strict mode”. Pewnego pięknego dnia postanowiliśmy przeprowadzić migrację naszego kodu, przepisaliśmy sumiennie funkcje na klasy w ES6 ale nie przyłożyliśmy znacznej uwagi do trzymania się standardów w deklarowaniu zmiennych itd. Pewne fukncje skopiowaliśmy centralnie ze starego kodu 😛 . Do budowania projektu z ES6=>ES5 użyliśmy babel-loader’a, który jeśli tego nie wyłączymy, domyślnie dodaje nagłówek „strict mode” do pliku wynikowego. Ku naszemu zdziwieniu nasz kod zaczął generować błędy a nasz dzień przestał być już taki piękny :). Wszystko przez to, że w naszym „migrowanym” kodzie nie trzymaliśmy się standardów narzuconych przez „strict mode” ,no a teraz musimy go najpewniej poprawić jeśli dalej chcemy trzymać się standardów:) (No chyba, że wyłączymy „stric mode” na dobre 😛 )

    Pozdro 😉

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*