Warum gibt es keine OFFIZIELLE JavaScript-Referenz? [geschlossen]

89

Ich habe versucht, nach einer JavaScript-Referenz zu suchen, aber es ist keine verfügbar. Die beiden besten vorgeschlagenen Quellen sind MDN (Mozilla Developer Network) und W3Schools.

Warum?

huy
quelle
54
Vermeiden Sie w3schools; Das JS-Material ist meiner Meinung nach extrem schlecht, IMHO.
NickFitz
1
Entschuldigung, ich meinte MDC; developer.mozilla.org/en/About_JavaScript
huy
9
Dies ist eine Art zufälliger Kommentar, aber ich persönlich denke, alle Browser sollten alle Javascript / Jscript-Bastardisierungen ausrangieren und jQuery nativ implementieren. :)
DisgruntledGoat
14
jQuery-Hintergrundbilder über dem DOM ersetzen JavaScript jedoch nicht.
Rob
2
@huy MDN, nicht MDC oder MDE
maan81

Antworten:

63

Es ist nicht so, dass es eine offizielle JavaScript-Version gibt. Alle Browser haben ihre eigene JavaScript-Engine erstellt - einige verwenden jedoch dieselbe. Vor allem aber hat Internet Explorer eine eigene Version, die nicht viel von dem unterstützt, was die anderen Browser unterstützen, was es sehr schwierig macht, eine allgemeine JavaScript-Referenz zu erstellen.

Bearbeiten:
Obwohl ich weiß, dass es ein offizielles ECMA-Standard- und Entwicklungsteam gibt, ist mein Punkt, dass es nicht wirklich wichtig ist, solange Browser (Internet Explorer) dem nicht gerecht werden. Letztendlich möchten Kunden, dass JavaScript auch für Internet Explorer funktioniert. Sie werden sich nicht um die ECMA-Standards kümmern, sie wollen nur, dass sie funktionieren. Hier kommen JavaScript-Bibliotheken ins Spiel, aber das ist eine andere Geschichte.

Es sind die gleichen Probleme mit HTML und CSS. Wir können diese Tools erst für die aktive Entwicklung verwenden, wenn:

  • Alle Browser unterstützen sie.
  • Wir liefern den Browsern Code, damit sie ihn unterstützen.
  • Es ist in Ordnung, dass es nicht in allen Browsern funktioniert.

Edit2:
Internet Explorer nähert sich mit dem neuen Browserprojekt von Microsoft: Edge dem Grab. Dies ändert jedoch nichts am Gesamtbild. Wir haben noch viele verschiedene Browser, die wir unterstützen müssen. Entwickler versuchen ständig, die Grenzen des Möglichen zu erweitern. Dies bedeutet, dass wir häufig dieses Problem haben. Einige Browserversionen, die wir unterstützen möchten, unterstützen einige Funktionen des Standards nicht (was normalerweise etwas fließend ist). Dies bedeutet, dass wir eine Problemumgehung vornehmen oder Frameworks verwenden müssen, die die fehlenden Builds implementieren in Funktionen.

googletorp
quelle
Ich verstehe, also haben verschiedene Browser eine eigene Implementierung gemäß dem ECMA-262-Standard, den Michael oben erwähnt hat?
Huy
3
@huy: ja - mit unterschiedlicher Unterstützung / unterschiedlichen Interpretationen dieses Standards, leider ...
Andrzej Doyle
1
-1, Es gibt einen offiziellen Javascript-Standard: Er heißt ECMAscript und es gibt eine offizielle Stelle dahinter: en.wikipedia.org/wiki/Ecma_International
hasen
Ich bin mir nicht sicher, warum Sie Internet Explorer als schlechter in der Unterstützung des ECMA- "Standards" herausgestellt haben als jeder andere Browser.
5
@ ראובן: Weil es ist / war. IE hatte lange Zeit nicht nur viele schwerwiegende Fehler, die andere Browser nicht hatten, sondern es fehlten auch wichtige Funktionen, die andere Browser hatten. IE8 und 9 haben jedoch viel aufgeholt, sodass sich die Situation ändert. Aber für viele Jahre war IE schrecklich, während die anderen Browser gute ECMAScript-Unterstützung hatten. Darüber hinaus ECMAScript ist ein Standard. Ich bin mir nicht sicher, warum Sie es in Anführungszeichen setzen.
Pauan
28

Sie können es mit der offiziellen ECMAscript-Site versuchen.

http://www.ecmascript.org/

Aber das Nützliche ist eigentlich die Implementierung jedes Browsers.

Ich mag dieses Cheatsheet aus Danny Goodmans JavaScript-Bibel sehr:

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

Sieger
quelle
Das Spickzettel ist tot. Darf ich caniuse.com vorschlagen?
Grinn
Danke, ich habe auf den neuen Link verlinkt und ein bisschen erklärt, was es war. Danke für die Warnung!
Victor
Schön, ich werde das überprüfen.
Grinn
21

Ich würde sagen, dies ist der "offizielle": https://developer.mozilla.org/en/JavaScript

Sie haben auch die ECMAScript-Sprachspezifikation, 5.1 Edition (oder als PDF die endgültige Spezifikation) .

Und von Microsoft: JavaScript-Sprachreferenz : "In dieser Dokumentation wird die Microsoft-Implementierung von JavaScript erläutert , die der Sprachspezifikation ECMAScript 5th Edition entspricht . Außerdem werden zusätzliche Funktionen bereitgestellt, die nicht in den Ecma-Standards enthalten sind."

Espo
quelle
8
IE hat keine JavaScript-Engine - es implementiert stattdessen JScript (das weitgehend kompatibel ist). msdn.microsoft.com/en-us/library/yek4tbz0%28VS.85%29.aspx scheint die offizielle Referenz dafür zu sein.
Quentin
3
Hmm ... developer.mozilla ist sehr hilfreich, aber ich würde es nicht "offiziell" nennen. Die ECMAScript-Sprachspezifikation ist näher an "offiziell".
Steve Harrison
4
Die ECMAScript-Sprachspezifikation ist die offizielle Referenz für ECMAScript. JavaScript ist eine Obermenge von ECMAScript, wurde von Netscape erstellt und Mozilla hat MDC von Netscape geerbt (obwohl sich der Name seitdem geändert hat)
Quentin
+1 für den ECMAScript-Standard.
Jason S
@Quentin - Interessant, dass der Titel des MSDN-Links, auf den Sie verweisen, jetzt "JavaScript-Referenz" lautet . Im MSDN-Artikel "JScript (ECMAScript3)" heißt es jedoch: "JScript ist die Microsoft-Implementierung der ECMA 262-Sprachspezifikation (ECMAScript Edition 3). Mit nur wenigen geringfügigen Ausnahmen (um die Abwärtskompatibilität zu gewährleisten) ist JScript eine vollständige Implementierung von der ECMA-Standard. " .
DavidRR
8

Wenn Sie ECMAScript für das Web verwenden (was 99,9% der Menschen sind), suchen Sie wahrscheinlich über die grundlegenden Syntaktiken der Sprache hinaus (die in der oben genannten ECMA-262-Spezifikation behandelt werden) nach einer DOM-Referenz - Dies ist die ECMAScript-API, die für die Interaktion mit Webdokumenten verwendet wird.

Ich bin sehr überrascht, dass niemand das DOM-API-Sofar erwähnt hat. Der aktuelle W3C DOM-Standard ist hier: http://www.w3.org/TR/DOM-Level-2-Core/

(Übrigens, was die Namensverwirrung betrifft - ECMAScript ist der Name des offiziellen Standards, und "Javascript" und "JScript" sind Netscape und Microsofts proprietäre "Gabeln")


quelle
3

Es gibt eine offizielle Referenz, sie hat einfach kein sehr praktisches Format. Dies ist die ECMA-262- Spezifikation. Es handelt sich um ein einzelnes, sehr großes PDF-Dokument anstelle eines durchsuchbaren Satzes von HTML-Seiten.

Michael Aaron Safyan
quelle
3

Alle Überarbeitungen von JavaScript-Seiten auf MDC durch ein Mitglied des Mozilla Documentation-Teams (wie Eric Shepherd ) sind offiziell. JavaScript wird offiziell von Mozilla verwaltet, daher ist nur die Dokumentation von Mozilla offiziell. Die einzigen Engines, die JavaScript unterstützen, werden derzeit von Mozilla erstellt, und jede andere Engine implementiert ECMAScript. JavaScript und ECMAScript weisen einige Unterschiede auf (zum Beispiel die großartige letAussage).

Eli Gray
quelle
3

Es ist sehr schwierig, eine "offizielle" Referenz zu haben, solange es Implementierungen (in allen Browsern) und eine Spezifikation (ECMAScript) gibt, aber keine Konformitätstests von Implementierungen mit den Spezifikationen.

Jetzt haben wir jedoch die EMCAScript 5-Konformitätssuite unter http://es5conform.codeplex.com/ - und es scheint ein gewisser Konsens darüber zu bestehen, dass ECMAScript-Implementierungen näher zusammenrücken werden, sodass ECMAScript eher die offizielle Referenz für die Sprache ist.

user195021
quelle
2

Ich finde die alten Netscape 4 JavaScript-Dokumente für diesen Zweck sehr nützlich. Obwohl sie offensichtlich völlig veraltet sind und einige der DOM-Funktionen in ihnen wie Ebenen längst nicht mehr vorhanden sind, sind sie für die Sprachgrundlagen wirklich solide.

Das liegt daran, dass vor den Tagen der IE-Vorherrschaft und der ECMA-Standardisierung das JavaScript von Netscape das endgültige JavaScript war. Andere Browser mussten so ziemlich genau das implementieren, was Sie in diesen alten Dokumenten sehen.

Sie sind auch viel einfacher zu lesen als das ECMA-262-Dokument, was selbst nach den Standards von Standarddokumenten ein absoluter Horror ist.

Bobince
quelle
1

Wikipedia-Zitat:

Anfänge bei Netscape

Im November 1996 reichte Netscape JavaScript bei Ecma International ein ...

JavaScript wird offiziell von der Mozilla Foundation verwaltet ...

Meiner Meinung nach ist die ECMA der Standard und Mozilla der offizielle.

SandroMarques
quelle
0

Mit "offiziell" meinen Sie "geschrieben von den Verantwortlichen für JavaScript".

Ich spekuliere hier wirklich nur, aber die Verantwortlichen für JavaScript (ECMA) verdienen kein direktes Geld damit und haben wahrscheinlich keine besonderen Fähigkeiten beim Schreiben von Referenzdokumentationen. Sie haben also weder den Anreiz noch die Fähigkeit, eine gute Referenz zu schreiben.

Persönlich mag ich JavaScript: den Definitive Guide von O'Reilly. Im November erscheint eine sechste Ausgabe.

Paul D. Waite
quelle
2
Ja, sind Sie. Sun besitzt die Marke für JavaScript, hat sie jedoch an Netscape lizenziert. Oracle hat Sun gekauft, daher besitzt Oracle jetzt die Marke (sie lizenzieren sie weiterhin an Mozilla). HTML und CSS werden vom W3C definiert, das ist also eine andere Sache. Die JS-Engine in Firefox enthält viele proprietäre (und großartige) Funktionen, die in keinem anderen Browser zu finden sind. Der Schöpfer von JavaScript (Brendan Eich) ist Mitglied des offiziellen ECMAScript-Komitees und arbeitet auch für Mozilla.
Pauan
1
Beachten Sie außerdem diesen Link: en.wikipedia.org/wiki/ECMAScript#Dialects Firefox verfügt über das sogenannte "JavaScript 1.8.5", das, wie bereits erwähnt, viele erweiterte Funktionen enthält, die in anderen Browsern wie Objekt- / Array-Destrukturierung / Verständnis nicht zu finden sind , Generatoren / Iteratoren, Let-Blöcke / Anweisungen usw. Beachten Sie auch die zweite Fußnote in diesem Link, in der steht: "Mozilla verwaltet die offizielle Version von JavaScript. Die meisten Nicht-Mozilla-Implementierungen, die JavaScript-Konformität beanspruchen, unterstützen die meisten JavaScript-Erweiterungen nicht. Sie zielen vielmehr auf ECMA-262, Ausgabe 3 ab. "
Pauan
1
Ich werde feststellen, dass ECMAScript sich von JavaScript unterscheidet. ECMAScript ist ein von Ecma definierter Standard. Browser sind normalerweise ziemlich gut darin, den ECMAScript-Standard zu unterstützen, und wenn die meisten Leute "JavaScript" sagen, meinen sie wirklich ECMAScript. Es ist bedauerlich, dass die Situation und Terminologie so verwirrend ist, aber da ist es. Die informelle Definition von JavaScript lautet also größtenteils "was auch immer die Browser tun", aber offiziell ist Mozilla tatsächlich dafür verantwortlich.
Pauan
1
Dies bedeutet, dass jede Frage, die nach einer "offiziellen JavaScript-Referenz" fragt, viel zu vage ist, um genau beantwortet zu werden. Sie haben den offiziellen ECMAScript-Standard, die tatsächlichen Implementierungen von JavaScript in den Browsern, das MDC (das die offizielle JavaScript-Implementierung in Firefox abdeckt) und dann natürlich die sehr beliebte inoffizielle Dokumentation wie w3schools. Alle sind nützlich, so dass es nicht wirklich eine "einzelne korrekte" Referenz gibt, wie es sie beispielsweise für Python gibt.
Pauan
2
(Vielleicht hätte ich dies als tatsächliche Antwort und nicht als eine Reihe von Kommentaren
posten sollen
-1

Ich mag Daniel Krooks Apidoc sehr , obwohl er einige Erklärungen und Beispiele gebrauchen könnte. Ich würde wirklich gerne ein krook w3school Mashup sehen.

Ben
quelle