De ce nu există o referință OFICIALĂ pentru JavaScript? [închis] (Programare, Javascript, Referință, Standarde Web, Ecma262)

huy a intrebat.

Am încercat să caut o referință JavaScript, dar nu există niciuna disponibilă. Cele mai bune două surse sugerate sunt MDN (Mozilla Developer Network) și W3Schools.

De ce?

Comentarii

    56

  • Evitați w3schools; materialul său JS tinde să fie extrem de slab, IMHO. –  > Por NickFitz.
  • Scuze, am vrut să spun MDC; developer.mozilla.org/en/About_JavaScript –  > Por huy.
  • Acesta este un fel de comentariu la întâmplare, dar personal cred că toate browserele ar trebui să renunțe la toate bastardizările Javascript/Jscript și să implementeze jQuery în mod nativ. 🙂 –  > Por DisgruntledGoat.
  • jQuery face tapet peste DOM, dar nu înlocuiește de fapt JavaScript. –  > Por Rob.
  • @huy MDN , nu MDC sau MDE –  > Por maan81.
11 răspunsuri
googletorp

Nu e ca și cum ar exista o versiune oficială a JavaScript. Toate browserele și-au făcut propriul motor JavaScript – unele folosesc totuși același lucru. Dar mai ales Internet Explorer are propria versiune care nu suportă multe din ceea ce suportă celelalte browsere, ceea ce face foarte dificilă realizarea unei referințe generale pentru JavaScript.

Editați:
Deși știu că există un standard oficial ECMA și o echipă de dezvoltare, punctul meu de vedere este că nu contează cu adevărat atâta timp cât browserele (Internet Explorer) nu îl respectă. La sfârșitul zilei, clienții vor ca JavaScript să funcționeze și pentru Internet Explorer. Nu le va păsa de standardele ECMA, ei vor doar să funcționeze. Aici intră în scenă bibliotecile JavaScript, dar aceasta este o altă poveste.

Sunt aceleași probleme cu HTML și CSS, nu putem folosi aceste instrumente pentru dezvoltare activă până când:

  • Toate browserele le acceptă.
  • Furnizăm browserelor codul necesar pentru a le face să le suporte.
  • Este în regulă dacă nu funcționează în toate browserele.

Edit2:
Internet Explorer se apropie de mormânt cu noul proiect de browser de la Microsoft: Edge. Acest lucru, însă, nu schimbă cu adevărat imaginea de ansamblu. Avem încă o mulțime de browsere diferite pe care trebuie să le suportăm. Dezvoltatorii încearcă în mod constant să împingă limitele a ceea ce este posibil. Acest lucru înseamnă că deseori avem această problemă, o versiune de browser pe care dorim să o suportăm nu suportă anumite caracteristici ale standard (care, de obicei, este un pic fluidă), ceea ce înseamnă că trebuie să facem o soluție de rezolvare sau să folosim cadre care implementează caracteristicile încorporate care lipsesc.

Comentarii

  • Înțeleg, deci diferite browsere au propria implementare în conformitate cu standardul ECMA-262 pe care Michael l-a menționat mai sus? –  > Por huy.
  • @huy: da – cu diferite niveluri de suport pentru/interpretări diferite ale acelui standard, din păcate… –  > Por Andrzej Doyle.
  • -1, Acolo este un standard oficial Javascript: se numește ECMAscript și există un organism oficial în spatele acestuia: en.wikipedia.org/wiki/Ecma_International –  > Por hasen.
  • Nu sunt sigur de ce ați evidențiat Internet Explorer ca fiind mai rău în ceea ce privește susținerea „standardului” ECMA decât orice alt browser. – user122299
  • @ראוובן: Pentru că este/era. Pentru o lungă perioadă de timp IE nu numai că avea multe bug-uri grave pe care alte browsere nu le aveau, dar îi lipseau și caracteristici importante pe care alte browsere le aveau. Totuși, IE8 și 9 au recuperat mult din urmă, așa că situația se schimbă. Dar, timp de mulți ani, IE a fost oribil, în timp ce celelalte browsere aveau un suport ECMAScript bun. În plus, ECMAScript este un standard. Nu sunt sigur de ce l-ați pus în ghilimele. –  > Por Pauan.
Victor

Puteți încerca cu site-ul oficial ECMAscript,

http://www.ecmascript.org/

dar ceea ce este util este de fapt implementarea fiecărui browser.

Mie îmi place foarte mult acest cheatsheet din Biblia JavaScript a lui Danny Goodman:

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

Comentarii

  • Această foaie de consultații este moartă. Pot să vă sugerez caniuse.com? –  > Por Grinn.
  • Mulțumesc, am făcut un link către noul link și am explicat puțin despre ce este vorba. Mulțumesc pentru informații! –  > Por Victor.
  • Drăguț, o să verific asta. –  > Por Grinn.
Espo

Aș spune că acesta este cel „oficial”: https://developer.mozilla.org/en/JavaScript

Aveți, de asemenea, și Specificația limbajului ECMAScript, ediția 5.1 (sau ca o PDF, , specificația definitivă).

Și de la Microsoft: Referința limbajului JavaScript: „Această documentație explică implementarea Microsoft a JavaScript, , care este conformă cu standardul ECMAScript ediția a 5-a a specificației limbajului. De asemenea, oferă caracteristici suplimentare care nu sunt incluse în standardele Ecma.”

Comentarii

  • IE nu are un motor JavaScript – în schimb, implementează JScript (care este în mare parte compatibil). msdn.microsoft.com/en-us/library/yek4tbz0%28VS.85%29.aspx pare a fi referința oficială în acest sens. –  > Por Quentin.
  • Hmm… developer.mozilla este foarte utilă, dar eu nu aș numi-o „oficială”. Specificația limbajului ECMAScript este mai aproape de „oficial”. –  > Por Steve Harrison.
  • Specificația limbajului ECMAScript este referința oficială pentru ECMAScript. JavaScript este un superset al ECMAScript, a fost creat de Netscape, iar Mozilla a moștenit MDC de la Netscape (deși numele s-a schimbat de atunci) –  > Por Quentin.
  • +1 pentru standardul ECMAScript. –  > Por Jason S.
  • @Quentin – Este interesant că titlul articolului link MSDN la care faceți referire este acum „Referință JavaScript”. Cu toate acestea, articolul din MSDN „JScript (ECMAScript3)” afirmă: „JScript este implementarea de către Microsoft a specificației limbajului ECMA 262 (ECMAScript Edition 3). Cu doar câteva excepții minore (pentru a menține compatibilitatea retroactivă), JScript este o implementare completă a standardului ECMA”.. –  > Por DavidRR.
lucideer

Dacă folosiți ECMAScript pentru web (ceea ce fac 99,9% dintre oameni), atunci, dincolo de sintaxa de bază a limbajului (acoperită în specificația ECMA-262 menționată mai sus), ceea ce căutați probabil este o referință DOM – care este API-ul ECMAScript utilizat pentru a interacționa cu documentele web.

Sunt foarte surprins că nimeni nu a menționat până acum api DOM. Standardul actual W3C DOM este aici: http://www.w3.org/TR/DOM-Level-2-Core/

(btw, în ceea ce privește confuzia de nume – ECMAScript este numele standardului oficial, iar „Javascript” și „JScript” sunt „furcile” brevetate de Netscape și Microsoft)

Michael Aaron Safyan

Există o referință oficială, doar că nu este într-un format foarte convenabil. Este vorba despre ECMA-262 caietul de sarcini. Este un singur document PDF foarte mare, în loc de un set de pagini HTML care pot fi căutate.

Eli Grey

Orice revizie a pagini JavaScript pe MDC de către un membru al echipei Mozilla Documentation (cum ar fi Eric Shepherd) este oficială. JavaScript este întreținut în mod oficial de Mozilla, deci numai documentația realizată de Mozilla este oficială. Singurele motoare care suportă JavaScript sunt realizate în prezent de Mozilla și toate celelalte motoare implementează ECMAScript. JavaScript și ECMAScript au destul de multe diferențe (de exemplu, minunatul let statement).

user195021

Este foarte dificil să ai o referință „oficială” atâta timp cât există implementări (în toate browserele) și există o specificație (ECMAScript), dar nu există teste de conformitate a implementărilor față de specificații.

Acum, însă, avem suita de conformitate EMCAScript 5 la adresa http://es5conform.codeplex.com/ – și se pare că există un anumit consens în privința faptului că implementările ECMAScript se vor apropia mai mult, ceea ce face ca ECMAScript să fie mai probabil să fie referința oficială pentru acest limbaj.

SandroMarques

Citatul din Wikipedia:

Începuturile la Netscape

În noiembrie 1996, Netscape a trimis JavaScript la EcmaInternational

JavaScript este administrat oficial de Fundația Mozilla

Așadar, în opinia mea, ECMA este standardul, iar Mozilla este cel oficial.

bobince

Mi se pare că vechea școală Netscape 4 JavaScript docs foarte utile în acest scop. Deși, evident, sunt total depășite, iar unele dintre caracteristicile DOM din ele, cum ar fi Layers, au dispărut de mult, pentru elementele de bază ale limbajului sunt foarte solide.

Asta pentru că, înainte de zilele de supremație a IE și de standardizarea ECMA, JavaScript-ul Netscape era JavaScript definitiv. Celelalte browsere trebuiau să implementeze exact ceea ce vedeți în aceste documente vechi.

De asemenea, acestea sunt mult mai ușor de citit decât documentul ECMA-262, care, chiar și după standardele documentelor de standardizare, este o groază absolută.

Paul D. Waite

Prin „oficial”, cred că vrei să spui „scris de către persoanele responsabile pentru JavaScript”.

Sunt doar speculații aici, dar persoanele responsabile pentru JavaScript (ECMA) nu câștigă direct niciun ban de pe urma acestuia și probabil că nu au competențe deosebite în scrierea documentației de referință. Așadar, nu au nici motivația, nici capacitatea de a scrie o referință bună.

Personal, îmi place JavaScript: Ghidul definitiv de la O’Reilly. În noiembrie va apărea a șasea ediție.

Comentarii

  • Da, așa este. Sun deține marca comercială pentru JavaScript, dar a acordat licență pentru Netscape. Oracle a cumpărat Sun, așa că acum Oracle deține marca comercială (încă o licențiază către Mozilla). HTML și CSS sunt definite de W3C, așa că este o altă problemă. Motorul JS din Firefox conține multe caracteristici proprietare (și impresionante) care nu se găsesc în niciun alt browser. Creatorul JavaScript (Brendan Eich) face parte din comitetul oficial ECMAScript și lucrează, de asemenea, pentru Mozilla. –  > Por Pauan.
  • În plus, observați acest link: ro.wikipedia.org/wiki/ECMAScript#Dialecte Firefox are ceea ce se numește „JavaScript 1.8.5” care, așa cum am menționat deja, conține multe caracteristici avansate care nu se găsesc în alte browsere, cum ar fi destructurarea/comprehensiunile de obiecte/array-uri, generatoare/iteratori, blocuri/statui let, etc. De asemenea, rețineți cea de-a doua notă de subsol din acel link, care spune că „Mozilla gestionează versiunea oficială a JavaScript. Majoritatea implementărilor care nu sunt de la Mozilla și care pretind că sunt „conforme” cu JavaScript nu acceptă de fapt majoritatea extensiilor JavaScript; mai degrabă, acestea vizează ECMA-262, ediția 3.” –  > Por Pauan.
  • Menționez că ECMAScript este diferit de JavaScript. ECMAScript este un standard definit de Ecma. De obicei, browserele sunt destul de bune în ceea ce privește suportul pentru standardul ECMAScript, iar atunci când majoritatea oamenilor spun „JavaScript” se referă de fapt la ECMAScript. Este regretabil că situația și terminologia sunt atât de confuze, dar asta este. Așadar, în cea mai mare parte, definiția informală a JavaScript este „orice fac browserele”, dar, oficial, Mozilla este într-adevăr responsabilă pentru el. –  > Por Pauan.
  • Ceea ce înseamnă că orice întrebare care solicită o „referință oficială pentru JavaScript” este mult prea vagă pentru a răspunde cu exactitate. Aveți standardul oficial ECMAScript, implementările reale ale JavaScript în browsere, MDC (care acoperă implementarea oficială a JavaScript în Firefox) și apoi, desigur, documentația neoficială foarte populară, cum ar fi w3schools. Toate sunt utile, așa că nu există cu adevărat o referință „unică și corectă”, așa cum există, de exemplu, pentru Python. –  > Por Pauan.
  • (poate că ar fi trebuit să postez acest lucru ca un răspuns real, mai degrabă decât o serie de comentarii… oh well) – –  > Por Pauan.
Ben

Îmi place foarte mult Daniel Krook’s apidoc, , chiar dacă ar putea folosi câteva explicații și exemple. Mi-ar plăcea foarte mult să văd un mashup krook w3school.