Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Marzec 15th, 2012

ECMAScript 5

Autor: Piotr Karpiuk o 15. marca 2012

Zaakceptowana oficjalnie w 1999 wersja 3 ECMAScript jest pewną bazą wszystkich implementacji języka JavaScript w dzisiejszych przeglądarkach. Tym niemniej, język się rozwija i dziś w najnowszych przeglądarkach jest już zaimplementowana obsługa ECMAScript 5, co dokładniej pokazuje tabelka (na skutek różnych perturbacji wersja 4 została zarzucona). Ba, mówi się już o wersji 6 (nazwa kodowa Harmony), której specyfikacja ma być gotowa na koniec 2013 roku, a niektóre przeglądarki (np. Google Chrome 19) już eksperymentalnie zaimplementowały niektóre zawarte tam nowinki – ale o tym innym razem. Przedmiotem dzisiejszego posta jest ECMAScript 5.

Przydatne odnośniki
ECMAScript 5.1 Spec

Wersja 5 nie zawiera żadnych rewolucyjnych zmian, zwłaszcza składniowych. Jest zestawem modyfikacji poprawiających bezpieczeństwo, jak również długo oczekiwanych usprawnień. O ile nie włączymy trybu ścisłego (o czym za chwilę), jest również zgodna wstecz.

Strict mode

Tryb ścisły (ang. strict mode) usuwa z języka pewne funkcje i wymusza określony styl kodowania, co czyni program prostszym i bardziej odpornym na błędy. Naruszenie dyscypliny powoduje wyjątek. Tryb ścisły włączamy umieszczając na początku zakresu zmiennych (na poziomie funkcji lub globalnym) łańcuch "strict mode" – starsze implementacje języka po prostu go zignorują. Planuje się, że w przyszłości tryb ścisły będzie jedynym dostępnym trybem.

W trybie ścisłym wyjątek spowoduje np.:

  • użycie zmiennej bez jej wcześniejszej deklaracji,
  • modyfikacja atrybutów obiektu niezgodnie z określoną polityką – patrz punkt „Object & Property System” w dalszej części,
  • usuwanie zmiennej,
  • definiowanie w jednym obiekcie dwóch własności o tej samej nazwie, lub w sygnaturze funkcji dwóch parametrów o tej samej nazwie:
              var x = { foo: true, foo: false }; // błąd
              function f(foo, foo) { ... }; // błąd
  • korzystanie wewnątrz funkcji z arguments.caller i arguments.callee,
  • użycie konstrukcji with.

Czytaj więcej »

Napisany w Uncategorized | Brak komentarzy »