Dlaczego nie ma OFICJALNEGO odniesienia do JavaScript? [Zamknięte]


91

Próbowałem poszukać odwołania JavaScript, ale nie ma żadnego dostępnego. Dwa najlepsze sugerowane źródła to MDN (Mozilla Developer Network) i W3Schools.

Czemu?


55
Unikaj w3schools; jego materiał JS jest bardzo słaby, IMHO.
NickFitz

1
Przepraszam, miałem na myśli MDC; developer.mozilla.org/en/About_JavaScript
huy

9
To rodzaj przypadkowego komentarza, ale osobiście uważam, że wszystkie przeglądarki powinny usuwać wszystkie bastardizacje Javascript / Jscript i implementować natywnie jQuery. :)
DisgruntledGoat

14
Tapety jQuery nad DOM, ale tak naprawdę nie zastępują JavaScript.
Rob

2
@huy MDN, nie MDC ani MDE
maan81

Odpowiedzi:


64

To nie jest tak, że istnieje oficjalna wersja JavaScript. Wszystkie przeglądarki stworzyły własny silnik JavaScript - niektóre jednak używają tego samego. Ale zwłaszcza Internet Explorer ma swoją własną wersję, która nie obsługuje wielu funkcji obsługiwanych przez inne przeglądarki, co bardzo utrudnia ogólne odniesienie do JavaScript.

Edycja:
Chociaż wiem, że istnieje oficjalny zespół ds. Standardów i programistów ECMA, uważam, że nie ma to znaczenia, o ile przeglądarki (Internet Explorer) nie spełniają tego warunku. Ostatecznie klienci chcą, aby JavaScript działał również w przeglądarce Internet Explorer. Nie będą się przejmować standardami ECMA, po prostu chcą, żeby działało. W tym miejscu pojawiają się biblioteki JavaScript, ale to już inna historia.

To te same problemy z HTML i CSS, nie możemy używać tych narzędzi do aktywnego programowania, dopóki:

  • Obsługują je wszystkie przeglądarki.
  • Dostarczamy przeglądarkom kod, aby je obsługiwały.
  • W porządku, nie działa we wszystkich przeglądarkach.

Edit2:
Internet Explorer zbliża się do grobu dzięki nowemu projektowi przeglądarki od Microsoft: Edge. Nie zmienia to jednak tak naprawdę ogólnego obrazu. Nadal mamy wiele, jeśli musimy obsługiwać różne przeglądarki. Programiści nieustannie próbują przesuwać granice tego, co jest możliwe. Oznacza to, że często mamy ten problem, niektóre wersje przeglądarki, które chcemy obsługiwać, nie obsługują jakiejś funkcji standardu (która zwykle jest nieco płynna), co oznacza, że ​​musimy zastosować jakieś obejście lub użyć frameworków, które implementują brakujący zbudowany w funkcjach.


Rozumiem, więc różne przeglądarki mają swoją własną implementację zgodną ze standardem ECMA-262, o którym Michael wspomniał powyżej?
huy

3
@huy: Tak - z różnych poziomów wsparcia / różnej interpretacji tej normy, niestety ...
Andrzej Doyle

1
-1 Nie jest oficjalnym standardem Javascript: to się nazywa ECMAscript i istnieje oficjalny organ za nim: en.wikipedia.org/wiki/Ecma_International
hasen

Nie jestem pewien, dlaczego wyróżniliście Internet Explorera jako gorszego pod względem obsługi „standardu” ECMA, jak każda inna przeglądarka.

5
@ ראובן: Ponieważ to jest / było. Przez długi czas IE nie tylko miał wiele poważnych błędów, których nie miały inne przeglądarki, ale także brakowało ważnych funkcji, które miały inne przeglądarki. Jednak IE8 i 9 sporo nadrobiły, więc sytuacja się zmienia. Ale przez wiele lat IE był okropny, podczas gdy inne przeglądarki miały dobrą obsługę ECMAScript. Ponadto standardem jest ECMAScript . Nie jestem pewien, dlaczego umieściłeś to w cudzysłowie.
Pauan

28

Możesz spróbować na oficjalnej stronie ECMAscript,

http://www.ecmascript.org/

ale użyteczną rzeczą jest w rzeczywistości implementacja każdej przeglądarki.

Bardzo podoba mi się ta ściągawka z Biblii JavaScript Danny'ego Goodmana:

http://media.wiley.com/product_ancillary/12/04705269/DOWNLOAD/9780470526910_Appendix_A.pdf


Ta ściągawka jest martwa. Czy mogę zasugerować caniuse.com?
Grinn

Dzięki, połączyłem się z nowym linkiem i wyjaśniłem trochę, co to było. Dzięki za ostrzeżenie!
Victor,

Świetnie, sprawdzę to.
Grinn,

22

Powiedziałbym, że ten jest „oficjalny”: https://developer.mozilla.org/en/JavaScript

Masz również specyfikację języka ECMAScript, wersja 5.1 (lub jako plik PDF , ostateczna specyfikacja) .

Firma Microsoft: Dokumentacja języka JavaScript : „Ta dokumentacja wyjaśnia implementację języka JavaScript przez firmę Microsoft , która jest zgodna ze specyfikacją języka ECMAScript 5. Edition . Zawiera również dodatkowe funkcje, które nie są objęte standardami Ecma”.


8
IE nie ma silnika JavaScript - zamiast tego implementuje JScript (który jest w dużej mierze zgodny). msdn.microsoft.com/en-us/library/yek4tbz0%28VS.85%29.aspx wygląda na oficjalne odniesienie do tego.
Quentin

3
Hmm ... developer.mozilla jest bardzo pomocny, ale nie nazwałbym tego "oficjalnym". Specyfikacja języka ECMAScript jest bliższa "oficjalnej".
Steve Harrison

4
Specyfikacja języka ECMAScript jest oficjalnym odniesieniem do ECMAScript. JavaScript jest nadzbiorem ECMAScript, został stworzony przez Netscape, a Mozilla odziedziczyła MDC po Netscape (chociaż nazwa uległa zmianie od tego czasu)
Quentin

+1 dla standardu ECMAScript.
Jason S

@Quentin - ciekawe, że tytuł odsyłacza MSDN, do którego się odwołujesz, to teraz „JavaScript Reference” . Jednak artykuł MSDN „JScript (ECMAScript3)” stwierdza: „JScript to implementacja specyfikacji języka ECMA 262 firmy Microsoft (ECMAScript Edition 3). Z kilkoma drobnymi wyjątkami (w celu zachowania zgodności wstecznej), JScript jest pełną implementacją standard ECMA ”. .
DavidRR

8

Jeśli używasz ECMAScript dla sieci (którym jest 99,9% ludzi), to poza podstawową składnią języka (opisaną w specyfikacji ECMA-262 wspomnianej powyżej), prawdopodobnie szukasz referencji DOM - czyli interfejs API ECMAScript używany do interakcji z dokumentami internetowymi.

Jestem bardzo zaskoczony, że nikt nie wspomniał o DOM api sofar. Aktualny standard W3C DOM jest tutaj: http://www.w3.org/TR/DOM-Level-2-Core/

(przy okazji, jeśli chodzi o zamieszanie w nazewnictwie - ECMAScript to nazwa oficjalnego standardu, a „Javascript” i „JScript” to Netscape i zastrzeżone „rozwidlenia” firmy Microsoft)


3

Istnieje oficjalne odniesienie, ale nie jest ono w bardzo wygodnym formacie. Jest to specyfikacja ECMA-262 . Jest to pojedynczy, bardzo duży dokument PDF, zamiast przeszukiwalnego zestawu stron HTML.


3

Wszelkie poprawki stron JavaScript w MDC dokonane przez członka zespołu dokumentacji Mozilli (takiego jak Eric Shepherd ) są oficjalne. JavaScript jest oficjalnie obsługiwany przez Mozillę, więc tylko dokumentacja Mozilli jest oficjalna. Jedyne silniki obsługujące JavaScript są obecnie tworzone przez Mozillę, a każdy inny silnik implementuje ECMAScript. JavaScript i ECMAScript mają kilka różnic (na przykład niesamowite letoświadczenie).


3

Bardzo trudno jest mieć „oficjalne” odniesienie, o ile istnieją implementacje (we wszystkich przeglądarkach) i istnieje specyfikacja (ECMAScript), ale nie ma testów zgodności implementacji ze specyfikacjami.

Teraz jednak mamy zestaw zgodności EMCAScript 5 pod adresem http://es5conform.codeplex.com/ - i wydaje się, że istnieje pewna zgoda co do tego, że implementacje ECMAScript zbliżą się do siebie, dzięki czemu ECMAScript będzie bardziej prawdopodobnym oficjalnym odniesieniem dla tego języka.


2

Uważam, że dokumentacja JavaScript Netscape 4 starej szkoły jest bardzo przydatna do tego celu. Chociaż są one oczywiście całkowicie przestarzałe, a niektóre funkcje DOM w nich, takie jak Layers, już dawno minęły, ze względu na podstawy języka są naprawdę solidne.

To dlatego, że przed dni IE supremacji i ECMA standaryzacji, Netscape JavaScript był ostateczne JavaScript. Inne przeglądarki musiały implementować dokładnie to, co widzisz w tych starych dokumentach.

Są również znacznie łatwiejsze do odczytania niż dokument ECMA-262, który nawet według standardów dokumentów jest absolutnym horrorem.



0

Myślę, że przez „oficjalny” masz na myśli „napisany przez ludzi odpowiedzialnych za JavaScript”.

Tylko spekuluję tutaj, naprawdę, ale ludzie odpowiedzialni za JavaScript (ECMA) nie zarabiają na tym bezpośrednio żadnych pieniędzy i prawdopodobnie nie mają żadnych szczególnych umiejętności w pisaniu dokumentacji referencyjnej. Więc nie mają ani motywacji, ani umiejętności, aby napisać dobre referencje.

Osobiście lubię JavaScript: Definitive Guide od O'Reilly. W listopadzie ukaże się szósta edycja.


2
Tak, oni są. Sun jest właścicielem znaku towarowego JavaScript, ale udzielił licencji firmie Netscape. Oracle kupiło Sun, więc teraz Oracle jest właścicielem znaku towarowego (nadal licencjonuje go Mozilli). HTML i CSS są definiowane przez W3C, więc to inna sprawa. Silnik JS w Firefoksie zawiera wiele zastrzeżonych (i niesamowitych) funkcji, których nie ma żadna inna przeglądarka. Twórca JavaScript (Brendan Eich) jest członkiem oficjalnego komitetu ECMAScript i pracuje również dla Mozilli.
Pauan

1
Ponadto, zwróć uwagę na ten link: en.wikipedia.org/wiki/ECMAScript#Dialects Firefox ma tak zwany „JavaScript 1.8.5”, który, jak już wspomniano, zawiera wiele zaawansowanych funkcji, których nie ma w innych przeglądarkach, takich jak niszczenie obiektów / tablic / rozumienia , generatory / iteratory, let bloki / instrukcje itp. Zwróć także uwagę na drugi przypis w tym łączu, który mówi: „Mozilla zarządza oficjalną wersją JavaScript. Większość implementacji innych niż Mozilla, które twierdzą, że JavaScript jest„ zgodność ”, w rzeczywistości nie obsługuje większości rozszerzeń JavaScript; ich celem jest raczej ECMA-262, wydanie 3. ”
Pauan

1
Zauważę, że ECMAScript różni się od JavaScript. ECMAScript to standard zdefiniowany przez Ecma. Przeglądarki zazwyczaj całkiem nieźle radzą sobie ze standardem ECMAScript, a kiedy większość ludzi mówi „JavaScript”, tak naprawdę mają na myśli ECMAScript. Szkoda, że ​​sytuacja i terminologia są tak zagmatwane, ale tak jest. Tak więc w większości nieformalna definicja JavaScript to „cokolwiek robią przeglądarki”, ale oficjalnie Mozilla jest za to odpowiedzialna.
Pauan,

1
Oznacza to, że każde pytanie, które wymaga „oficjalnego odniesienia do JavaScript”, jest zbyt niejasne, aby odpowiedzieć dokładnie. Masz oficjalny standard ECMAScript, rzeczywiste implementacje JavaScript w przeglądarkach, MDC (który obejmuje oficjalną implementację JavaScript w Firefoksie) i oczywiście bardzo popularną nieoficjalną dokumentację, taką jak w3schools. Wszystkie są przydatne, więc tak naprawdę nie ma żadnego „jednego poprawnego” odniesienia, jak na przykład dla Pythona.
Pauan

2
(być może powinienem był opublikować to jako rzeczywistą odpowiedź, a nie serię komentarzy ... no cóż)
Pauan

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.