Pourquoi n'y a-t-il pas de référence JavaScript OFFICIELLE? [fermé]


90

J'ai essayé de rechercher une référence JavaScript, mais aucune n'est disponible. Les deux meilleures sources suggérées sont MDN (Mozilla Developer Network) et W3Schools.

Pourquoi?


54
Évitez les w3schools; son matériel JS a tendance à être extrêmement pauvre, à mon humble avis.
NickFitz

1
Désolé je voulais dire MDC; developer.mozilla.org/en/About_JavaScript
huy

9
C'est une sorte de commentaire aléatoire, mais personnellement, je pense que tous les navigateurs devraient supprimer toutes les bastardisations Javascript / Jscript et implémenter jQuery de manière native. :)
DisgruntledGoat

14
jQuery fonds d'écran sur le DOM, mais ne remplace pas réellement JavaScript.
Rob

2
@huy MDN, pas MDC ou MDE
maan81

Réponses:


63

Ce n'est pas comme s'il y avait une version officielle de JavaScript. Tous les navigateurs ont créé leur propre moteur JavaScript - certains l'utilisent cependant. Mais en particulier, Internet Explorer a sa propre version qui ne prend pas en charge une grande partie de ce que les autres navigateurs prennent en charge, ce qui rend très difficile de faire une référence JavaScript générale.

Edit:
Bien que je sache qu'il existe une équipe de développement et de standard ECMA officielle, mon point est que cela n'a pas vraiment d'importance tant que les navigateurs (Internet Explorer) ne sont pas à la hauteur. À la fin de la journée, les clients souhaitent que JavaScript fonctionne également pour Internet Explorer. Ils ne se soucient pas des normes ECMA, ils veulent juste que cela fonctionne. C'est là que les bibliothèques JavaScript entrent en scène, mais c'est une autre histoire.

Ce sont les mêmes problèmes avec HTML et CSS, nous ne pouvons pas utiliser ces outils pour le développement actif tant que:

  • Tous les navigateurs les prennent en charge.
  • Nous fournissons aux navigateurs du code pour qu'ils le prennent en charge.
  • C'est bon, cela ne fonctionne pas dans tous les navigateurs.

Edit2:
Internet Explorer se rapproche de la tombe avec le nouveau projet de navigateur de Microsoft: Edge. Ceci, cependant, ne change pas vraiment la vue d'ensemble. Nous avons encore beaucoup de navigateurs à prendre en charge. Les développeurs essaient constamment de repousser les limites de ce qui est possible. Cela signifie que nous avons souvent ce problème, certaines versions de navigateur que nous souhaitons prendre en charge ne prennent pas en charge certaines fonctionnalités de la norme (qui sont généralement un peu fluides), ce qui signifie que nous devons trouver une solution de contournement ou utiliser des frameworks qui implémentent la version manquante. dans les fonctionnalités.


Je vois, si différents navigateurs ont leur propre implémentation selon la norme ECMA-262 que Michael a mentionnée ci-dessus?
huy

3
@huy: oui - avec différents niveaux de soutien pour / différentes interprétations de cette norme, malheureusement ...
Andrzej Doyle

1
-1, Il est une norme officielle Javascript: il est appelé ECMAScript et il y a un organisme officiel derrière: en.wikipedia.org/wiki/Ecma_International
Hasen

Je ne suis pas sûr de savoir pourquoi vous avez choisi Internet Explorer comme étant pire pour supporter le "standard" ECMA comme n'importe quel autre navigateur.

5
@ ראובן: Parce que c'est / était. Pendant longtemps, IE a non seulement eu de nombreux bogues graves que les autres navigateurs n'avaient pas, mais il manquait également des fonctionnalités importantes que les autres navigateurs avaient. Cependant, IE8 et 9 ont beaucoup rattrapé leur retard, donc la situation est en train de changer. Mais pendant de nombreuses années, IE a été horrible, tandis que les autres navigateurs avaient un bon support ECMAScript. De plus, ECMAScript est une norme. Je ne sais pas pourquoi vous le mettez entre guillemets.
Pauan

28

Vous pouvez essayer avec le site officiel ECMAscript,

http://www.ecmascript.org/

mais la chose utile est en fait l'implémentation de chaque navigateur.

J'aime beaucoup cette feuille de triche de la Bible JavaScript de Danny Goodman:

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


Cette feuille de triche est morte. Puis-je suggérer caniuse.com?
Grinn

Merci, j'ai lié au nouveau lien et expliqué un peu ce que c'était. Merci pour l'information!
Victor

Bien, je vais vérifier ça.
Grinn

22

Je dirais que celui-ci est «officiel»: https://developer.mozilla.org/en/JavaScript

Vous disposez également de la spécification du langage ECMAScript, édition 5.1 (ou au format PDF , la spécification définitive) .

Et de Microsoft: JavaScript Language Reference : "Cette documentation explique l' implémentation Microsoft de JavaScript , qui est conforme à la spécification du langage ECMAScript 5ème édition . Elle fournit également des fonctionnalités supplémentaires qui ne sont pas incluses dans les standards Ecma."


8
IE n'a pas de moteur JavaScript - il implémente JScript à la place (qui est largement compatible). msdn.microsoft.com/en-us/library/yek4tbz0%28VS.85%29.aspx ressemble à la référence officielle pour cela.
Quentin

3
Hmm ... developer.mozilla est très utile, mais je n'appellerais pas cela "officiel". La spécification du langage ECMAScript est plus proche de «officielle».
Steve Harrison

4
La spécification du langage ECMAScript est la référence officielle d'ECMAScript. JavaScript est un sur-ensemble d'ECMAScript, a été créé par Netscape, et Mozilla a hérité de MDC de Netscape (bien que le nom ait changé depuis)
Quentin

+1 pour le standard ECMAScript.
Jason S

@Quentin - Il est intéressant de noter que le titre du lien MSDN auquel vous faites référence est désormais "JavaScript Reference" . Cependant, l'article MSDN "JScript (ECMAScript3)" déclare: "JScript est l'implémentation Microsoft de la spécification du langage ECMA 262 (ECMAScript Edition 3). À quelques exceptions près (pour maintenir la compatibilité descendante), JScript est une implémentation complète de la norme ECMA. " .
DavidRR

8

Si vous utilisez ECMAScript pour le Web (ce que sont 99,9% des gens), alors au-delà de la syntaxe de base du langage (couverte dans la spécification ECMA-262 mentionnée ci-dessus), vous recherchez probablement une référence DOM - qui est l'API ECMAScript utilisée pour interagir avec les documents Web.

Je suis très surpris que personne n'ait mentionné le sofar DOM api. La norme DOM actuelle du W3C est ici: http://www.w3.org/TR/DOM-Level-2-Core/

(btw, quant à la confusion de dénomination - ECMAScript est le nom de la norme officielle, et "Javascript" et "JScript" sont les "fourches" propriétaires de Netscape et Microsoft)


3

Il existe une référence officielle, ce n'est tout simplement pas dans un format très pratique. C'est la spécification ECMA-262 . Il s'agit d'un document PDF unique et très volumineux, au lieu d'un ensemble de pages HTML consultables.


3

Toute révision des pages JavaScript sur MDC par un membre de l'équipe de documentation de Mozilla (comme Eric Shepherd ) est officielle. JavaScript est officiellement maintenu par Mozilla, donc seule la documentation de Mozilla est officielle. Les seuls moteurs qui prennent en charge JavaScript sont actuellement créés par Mozilla et tous les autres moteurs implémentent ECMAScript. JavaScript et ECMAScript ont quelques différences (par exemple, la letdéclaration géniale ).


3

Il est très difficile d'avoir une référence «officielle» tant qu'il y a des implémentations (dans tous les navigateurs) et qu'il y a une spécification (ECMAScript) mais pas de tests de conformité des implémentations par rapport aux spécifications.

Maintenant, cependant, nous avons la suite de conformité EMCAScript 5 à http://es5conform.codeplex.com/ - et il semble que les implémentations d'ECMAScript se rapprochent, ce qui rend ECMAScript plus susceptible d'être la référence officielle du langage.


2

Je trouve la documentation JavaScript de la vieille école Netscape 4 très utile à cette fin. Bien qu'ils soient de toute évidence totalement obsolètes et que certaines des fonctionnalités DOM, comme les couches, ont disparu depuis longtemps, pour les bases du langage, elles sont vraiment solides.

C'est parce qu'avant l'époque de la suprématie d'IE et de la normalisation ECMA, le JavaScript de Netscape était le JavaScript définitif. D'autres navigateurs ont quasiment dû implémenter exactement ce que vous voyez dans ces anciens documents.

Ils sont également beaucoup plus faciles à lire que le document ECMA-262, qui, même selon les normes des documents normatifs, est une horreur absolue.


1

Citation de Wikipedia:

Débuts chez Netscape

En novembre 1996, Netscape a soumis JavaScript à Ecma International ...

JavaScript est officiellement géré par Mozilla Foundation ...

Donc, à mon avis, l'ECMA est la norme et Mozilla est la norme officielle.


0

Par «officiel», je pense que vous entendez «écrit par les personnes responsables de JavaScript».

Je ne fais que spéculer ici, mais les personnes responsables de JavaScript (l'ECMA) n'en tirent pas directement profit, et n'ont probablement pas de compétences particulières pour rédiger des documents de référence. Ils n'ont donc ni l'incitation ni la capacité d'écrire une bonne référence.

Personnellement, j'aime JavaScript: le guide définitif d'O'Reilly. Une sixième édition sortira en novembre.


2
Oui, ils sont. Sun est propriétaire de la marque de commerce JavaScript, mais la concède sous licence à Netscape. Oracle a acheté Sun, alors maintenant Oracle est propriétaire de la marque (ils la concèdent toujours sous licence à Mozilla). HTML et CSS sont définis par le W3C, c'est donc une autre affaire. Le moteur JS de Firefox contient de nombreuses fonctionnalités propriétaires (et impressionnantes) qui ne se trouvent dans aucun autre navigateur. Le créateur de JavaScript (Brendan Eich) fait partie du comité officiel ECMAScript et travaille également pour Mozilla.
Pauan

1
De plus, notez ce lien: en.wikipedia.org/wiki/ECMAScript#Dialects Firefox a ce que l'on appelle "JavaScript 1.8.5" qui, comme déjà mentionné, contient de nombreuses fonctionnalités avancées que l'on ne trouve pas dans d'autres navigateurs comme la déstructuration / compréhension d'objets / tableaux , générateurs / itérateurs, let blocs / déclarations, etc. Notez également la 2ème note de bas de page dans ce lien, qui dit "Mozilla gère la version officielle de JavaScript. La plupart des implémentations non-Mozilla revendiquant la" conformité "JavaScript ne supportent pas réellement la plupart des extensions JavaScript; ils ciblent plutôt ECMA-262, édition 3. "
Pauan

1
Je noterai qu'ECMAScript est différent de JavaScript. ECMAScript est un standard défini par Ecma. Les navigateurs sont généralement assez bons pour prendre en charge le standard ECMAScript, et lorsque la plupart des gens disent "JavaScript", ils signifient vraiment ECMAScript. Il est malheureux que la situation et la terminologie soient si déroutantes, mais la voilà. Donc, pour la plupart, la définition informelle de JavaScript est "tout ce que font les navigateurs", mais officiellement, Mozilla en est effectivement responsable.
Pauan

1
Cela signifie que toute question qui demande une "référence JavaScript officielle" est beaucoup trop vague pour y répondre avec précision. Vous avez le standard officiel ECMAScript, les implémentations réelles de JavaScript dans les navigateurs, le MDC (qui couvre l'implémentation officielle de JavaScript dans Firefox), et bien sûr la documentation non officielle très populaire comme w3schools. Toutes sont utiles, il n'y a donc pas vraiment de référence "correcte unique" comme c'est le cas pour, par exemple, Python.
Pauan

2
(peut-être aurais-je dû publier cela comme une réponse réelle, plutôt qu'une série de commentaires ... eh bien)
Pauan

-1

J'aime beaucoup l'apidoc de Daniel Krook , même si elle pourrait utiliser quelques explications et exemples. J'aimerais vraiment voir un mashup krook w3school.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.