JavaScript
| ||
Logo języka | ||
Pojawienie się | 4 grudnia 1995; ponad 25 lat temu[1] | |
Paradygmat | Język skryptowy wieloparadygmatowy (obiektowy, funkcyjny, imperatywny) | |
Typowanie | dynamiczne, Duck typing | |
Implementacje | SpiderMonkey, V8, JavaScriptCore, Chakra, Rhino, Carakan, KJS | |
Aktualna wersja stabilna | ECMAScript 2022[2] (czerwiec 2021) | |
Twórca | Brendan Eich | |
Platforma sprzętowa | wieloplatformowy |
JavaScript, w skrócie JS – skryptowy język programowania, stworzony przez firmę Netscape, najczęściej stosowany na stronach internetowych. Twórcą JavaScriptu jest Brendan Eich[3]. W połowie lat 90. XX wieku organizacja ECMA wydała na podstawie JavaScriptu standard języka skryptowego o nazwie ECMAScript, aktualnie rozwijaniem tego standardu zajmuje się komisja TC39[4].
Zastosowanie[edytuj | edytuj kod]
Najczęściej spotykanym zastosowaniem języka JavaScript są strony internetowe. Skrypty te służą najczęściej do zapewnienia interakcji poprzez reagowanie na zdarzenia, walidacji danych wprowadzanych w formularzach lub tworzenia złożonych efektów wizualnych. Skrypty JavaScriptu uruchamiane przez strony internetowe mają znacznie ograniczony dostęp do komputera użytkownika. Po stronie serwera JavaScript może działać w postaci node.js lub Ringo[5].
W języku JavaScript można także pisać pełnoprawne aplikacje. Fundacja Mozilla udostępnia środowisko złożone z technologii takich jak XUL, XBL, XPCOM oraz JSLib. Umożliwiają one tworzenie korzystających z zasobów systemowych aplikacji o graficznym interfejsie użytkownika dopasowującym się do danej platformy. Przykładem aplikacji napisanych z użyciem JS i XUL może być klient IRC o nazwie ChatZilla, domyślnie dołączony do pakietu Mozilla. Microsoft udostępnia biblioteki umożliwiające tworzenie aplikacji JScript jako część środowiska Windows Scripting Host. Ponadto JScript.NET jest jednym z podstawowych języków środowiska .NET. Istnieje także stworzone przez IBM środowisko SashXB dla systemu Linux, które umożliwia tworzenie w języku JavaScript aplikacji korzystających z GTK+, GNOME i OpenLDAP. Platforma Node.js umożliwia pisanie aplikacji wiersza poleceń oraz aplikacji serwerowych. Node.js używany jest także w środowisku Electron, który umożliwia pisanie aplikacji GUI. Język JavaScript używany jest także na urządzeniach internetu rzeczy, robotów czy układów takich jak Arduino poprzez bibliotekę Johnny-Five[6].
Historia[edytuj | edytuj kod]
Wersja | Wydana | Zmiany[7] |
---|---|---|
1 | czerwiec 1997 | |
2 | czerwiec 1998 | Głównie korekta redaktorska[a] |
3 | grudzień 1999 | Wyrażenia regularne, obsługa wyjątków, nowe rodzaje pętli, literały tablic i obiektów |
4 | porzucona | Klasy, jawna kontrola dostępu, alternatywne dla DOM wbudowane wsparcie dla XML[b] |
5 | grudzień 2009 | Tryb „use strict”, obsługa JSON |
6 – 2015[8] | czerwiec 2015 | Klasy, moduły, iterator for/of, kolekcje, tablice typowane, proxies (meta obiekty), wyjaśnia wiele niejednoznaczności z wersji 3 |
7 – 2016[9] | czerwiec 2016 | Operator potęgowy – **, Array.prototype.includes |
8 – 2017[10] | czerwiec 2017 | funkcje async/await, String.prototype.padStart/padEnd, Object.values/entries |
9 – 2018[11] | czerwiec 2018 | Asynchroniczne iteratory, Rest/Spread dla właściwości obiektów, nowe funkcje wyrażeń regularnych, funkcja finally dla obietnic |
10 – 2019[4] | czerwiec 2019 | Dodanie metody spłaszczania tablic, zmiany w metodzie sortowania tablic i metodzie Object.fromEntries |
11 – 2020[12] | czerwiec 2020 | Dodanie operatora null’owego scalania, operatora opcjonalnego dostępu, wprowadzono primityw BigInt |
12 – 2021[2] | czerwiec 2021 | Możliwość używania separatorów liczbowych dla literałów liczbowych, możliwość sprawdzenia pustości lub braku określenia wartości zmiennej, funkcja any dla obietnic |
W 1996 r. organizacja ECMA rozpoczęła pracę nad specyfikacją języka JavaScript pozbawioną odniesień na temat interpretującego kod środowiska. Język opisany w standardzie ECMA-262 został nazwany ECMAScript. Od tego momentu nazwa JavaScript oznacza jedynie jeden z nadzbiorów języka ECMAScript. Pierwsza wersja standardu była bliska JavaScriptowi w wersji 1.1. Trzecia jako pierwsza rozszerzyła istniejące implementacje. Wersja ES4 została całkowicie porzucona przez przeglądarki internetowe, korzystał z niej jedynie język ActionScript dla platformy Flash. Od wersji ES5 przeglądarki na bieżąco implementują funkcje dodawane do standardu, często także, gdy są jeszcze propozycjami.
Dialekty[edytuj | edytuj kod]
Od czasu powstania JavaScriptu opracowywane były różne jego odmiany interpretowane za pomocą osobnych silników. Oprócz implementacji wprowadzonych do przeglądarek internetowych należy do nich ActionScript aplikacji Adobe Flash oraz UnityScript w silniku Unity (nie jest już on obsługiwany od wersji 2018.2[13]).
Wersja | Wydana | Okoliczności wydania | Ważniejsze rozszerzenia implementowanej specyfikacji[c][14] | przeg. |
spec. |
---|---|---|---|---|---|
1.0 | marzec 1996 | NN 2.0 | brak | ||
1.1 | sierpień 1996 | Klasy typów podstawowych, konstruktory, prototypy | NN 3.0 | brak | |
1.2 | czerwiec 1997 | Klasa zdarzenia | NN 4.0 | brak[d] | |
1.3 | październik 1998 | NN 4.06 | 2 | ||
1.4 | ? | Dostępna jedynie po stronie serwera (np. Netscape Enterprise Server). | 2 | ||
1.5 | listopad 2000 | Stałe, interfejs DOM poziom pierwszy i drugi | M 0.6 | 3 | |
1.6 | listopad 2005 | Mechanizm E4X | Fx 1.5 | 3 | |
1.7 | październik 2006 | Funkcje-iteratory, wielokrotne przypisania | Fx 2.0 | 3 | |
1.8 | czerwiec 2008 | domknięcia wyrażeń, wyrażenia generujące | Fx 3.0 | 3 |
Wersja | Wydana | Okoliczności wydania | Ważniejsze rozszerzenia implementowanej specyfikacji[c] | przeg. |
spec. |
≈ JS |
---|---|---|---|---|---|---|
1.0 | sierpień 1996 | IE 3.0 | brak | 1.0 | ||
2.0 | styczeń 1997 | IE 3.02 | brak | 1.1 | ||
3.0 | październik 1997 | IE 4.0 | 1 | 1.3 | ||
4.0 | ? | Visual Studio 6.0 | 1 | 1.4 | ||
5.0 | marzec 1999 | Częściowa implementacja trzeciej wersji standardu (bez mechanizmu wyjątków), interfejsy XMLHttpRequest oraz DOM poziom pierwszy i drugi | IE 5.0 | 2 | 1.5 | |
5.1 | sierpień 2000 | IE 5.01 | 2 | |||
5.5 | sierpień 2000 | IE 5.5 | 3 | |||
5.6 | październik 2001 | IE 6.0 | 3 | |||
5.7 | listopad 2006 | IE 7.0 | 3 | |||
.NET | 11 lipca 2000 | Microsoft na bazie wstępnej wersji specyfikacji ECMAScript 4 stworzył JScript.NET. | 4 | ? |
Java[edytuj | edytuj kod]
Początkowo Netscape nazwała nowy język LiveScript. Nazwa została jednak szybko zmieniona na JavaScript wskutek biznesowych porozumień pomiędzy Netscape a firmą Sun Microsystems (współwłaścicielem znaku handlowego JavaScript jest Oracle Corporation, które przejęło Sun Microsystems w 2010 roku). Skrypty JavaScriptu oraz aplety Javy (mimo odrębności tych dwóch języków) mogą się wzajemnie komunikować dzięki dostępnej w przeglądarkach Netscape, Mozilla i Opera technologii LiveConnect. Często występują pewne nieporozumienia, lecz JavaScript i Java to mimo wszystko dwa różne języki.
JavaScript dla WWW[edytuj | edytuj kod]
Interakcja[edytuj | edytuj kod]
Wszystkie implementacje JavaScriptu dostępne w przeglądarkach internetowych dostarczają obiektów reprezentujących drzewo dokumentu. Mogą także umożliwiać tworzenie ciasteczek, manipulowanie oknami przeglądarki, wyświetlanie prostych okien dialogowych, pobieranie informacji o przeglądarce, zarządzanie jej pluginami oraz arkuszami stylów. Reagują także na zdarzenia wywoływane w interfejsie.
Podczas manipulowania zawartością dokumentu problem stanowił brak jego ustandaryzowanego modelu. W czwartym pokoleniu przeglądarek dostęp do niektórych elementów dokumentu w Netscape możliwy był przy użyciu kolekcji document.layers
, za to w Internet Explorerze – document.all
. Organizacja W3C opracowała jednak jednolity obiektowy model obsługiwany przez wszystkie współczesne przeglądarki (w tym Operę od wersji 6, Konquerora od wersji 3 oraz Safari). Tablice all
i layers
zostały uznane za przestarzałe i wsparcie dla nich zostało praktycznie wycofane.
Osadzanie[edytuj | edytuj kod]
W języku HTML za umieszczanie skryptów JS odpowiedzialny jest element <script> z opcjonalnymi argumentami type o wartości text/javascript i language o wartości javascript .
|
<script type="text/javascript" language="JavaScript 1.5">
alert(12 > 6);
</script>
|
Jeżeli kod znajduje się w dokumencie XHTML, w celu uniknięcia zinterpretowania niektórych operatorów jako elementów składni języka należy otoczyć skrypt sekcją CDATA lub zapisać je w postaci encji[15]. W XHTML nie można używać argumentu language w znaczeniu określenia wersji języka JS (atrybut, jeżeli jest użyty, powinien przyjąć dwuznakowe wartości opisane standardem ISO 639, np. EN, DE, PL).
|
<script type="text/javascript">
/* <![CDATA[ */
alert(12 > 6);
/*]]> */</script>
|
Zewnętrzne skrypty dodawane są także przy użyciu powyższego znacznika, uwzględniając jedynie parametr src z nazwą pliku zawierającego kod skryptu. Typ MIME dla samodzielnych plików JavaScript to application/javascript lub przestarzały text/javascript [16].
|
<script type="text/javascript" src="code.js"></script>
|
Kompilatory[edytuj | edytuj kod]
Przeglądarki oraz język JavaScript stały się platformą do obsługi innych języków. Istnieją kompilatory, które konwertują pliki innego języka na JavaScript. Z najbardziej znanych można wymienić:
Istnieją także transpilatory nowszej wersji języka, na wersje starsze, które będą obsługiwane przez większą liczbę przeglądarek. Dzięki temu można korzystać z nowości, dodanych do języka zanim zostaną dodane przez przeglądarki. Przykładem takiego narzędzia jest Babel.
Zobacz też[edytuj | edytuj kod]
- Składnia Javascriptu
- WebAssembly
- JSON (JavaScript Object Notation)
- Szczególne zastosowania JavaScriptu:
- DOM – obiektowy model dokumentu
- DHTML – modyfikacja elementów dokumentu
- XMLHttpRequest – pobieranie zewnętrznych dokumentów
Uwagi[edytuj | edytuj kod]
- ↑ Przyczyną były prace nad ustanowieniem ECMAScript 2 normą ISO 16262.
- ↑ Dotychczas opracowywane jako osobny standard ECMA-357.
- ↑ a b Lub poprzedniej wersji implementacji, jeżeli specyfikacji ECMAScript jeszcze nie wydano.
- ↑ Wersja ta została wydana, zanim ECMA ukończyła pierwszą specyfikację. Mimo to jest z nią częściowo zgodna.
Przypisy[edytuj | edytuj kod]
- ↑ Informacja prasowa – „Netscape and Sun announce JavaScript” (ang.).
- ↑ a b ECMAScript® 2021 Language Specification (ang.). 262.ecma-international.org. [dostęp 2021-08-07].
- ↑ Paul Krill: JavaScript founder Brendan Eich: WebAssembly is a game-changer (ang.). InfoWorld, 2016-03-10. [dostęp 2016-12-21].
- ↑ a b Standard ECMA-262. www.ecma-international.org. [dostęp 2016-12-29].
- ↑ Ringo.
- ↑ Johnny-Five: The JavaScript Robotics & IoT Platform.
- ↑ JavaScript 2.0: Evolving a Language for Evolving Systems.
- ↑ ECMAScript 2015 Language Specification – ECMA-262 6th Edition, www.ecma-international.org [dostęp 2018-04-15] (ang.).
- ↑ ECMAScript® 2016 Language Specification, www.ecma-international.org [dostęp 2018-04-15] .
- ↑ ECMAScript® 2017 Language Specification, www.ecma-international.org [dostęp 2018-04-15] .
- ↑ ECMAScript® 2018 Language Specification, www.ecma-international.org [dostęp 2019-06-19] .
- ↑ ECMAScript® 2020 Language Specification .
- ↑ UnityScript’s long ride off into the sunset (ang.). [dostęp 2019-05-19].
- ↑ Wersja 1.1 – Features added after version 1,
- Wersja 1.2 – Feature Summary,
- Wersja 1.3 – New Features in this Release,
- Wersja 1.5 – New features in JavaScript 1.5,
- Wersja 1.6 – New in JavaScript 1.6,
- Wersja 1.7 – New in JavaScript 1.7,
- Wersja 1.8 – New in JavaScript 1.8.
- ↑ Osadzanie skryptów w XHTML. [dostęp 2007-05-07]. [zarchiwizowane z tego adresu (2007-04-20)].
- ↑ B. Hoehrmann , Scripting Media Types, RFC 4329, IETF, kwiecień 2006, DOI: 10.17487/RFC4329, ISSN 2070-1721, OCLC 943595667 (ang.).
Linki zewnętrzne[edytuj | edytuj kod]
- Specyfikacja języka ECMAScript
- Zasoby Mozilla Developer Network na temat JavaScriptu
- Włączenie obsługi JavaScript w przeglądarkach internetowych
- Sławomir Wilk: Wyłącz JavaScript i sprawdź, jak szybko może działać Internet – Technologie. 2013-12-10. [dostęp 2020-05-09]. [zarchiwizowane z tego adresu (2019-10-25)]. – artykuł o zaletach wyłączenia obsługi JavaScript w przeglądarce internetowej