Por que não há referência OFICIAL de JavaScript? [fechadas]

90

Tentei procurar uma referência de JavaScript, mas não há nenhuma disponível. As duas melhores fontes sugeridas são MDN (Mozilla Developer Network) e W3Schools.

Por quê?

huy
fonte
54
Evite w3schools; seu material JS tende a ser extremamente pobre, IMHO.
NickFitz,
1
Desculpe, eu quis dizer MDC; developer.mozilla.org/en/About_JavaScript
huy
9
Este é um tipo de comentário aleatório, mas pessoalmente acho que todos os navegadores deveriam descartar todas as bastardizações de Javascript / Jscript e implementar jQuery nativamente. :)
DisgruntledGoat
14
Papéis de parede jQuery sobre o DOM, mas não substitui o JavaScript.
Rob
2
@huy MDN, não MDC ou MDE
maan81

Respostas:

63

Não é como se houvesse um lançamento oficial do JavaScript. Todos os navegadores criaram seu próprio mecanismo JavaScript - alguns estão usando o mesmo. Mas especialmente o Internet Explorer tem sua própria versão que não suporta muito do que os outros navegadores suportam, tornando muito difícil fazer uma referência geral de JavaScript.

Edit:
Embora eu saiba que existe um padrão oficial ECMA e uma equipe de desenvolvimento, meu ponto é que isso realmente não importa, contanto que os navegadores (Internet Explorer) não cumpram com isso. No final do dia, os clientes desejam que o JavaScript funcione também com o Internet Explorer. Eles não se importam com os padrões ECMA, eles apenas querem que funcione. É aqui que as bibliotecas JavaScript entram em cena, mas isso é outra história.

São os mesmos problemas com HTML e CSS, não podemos usar essas ferramentas para desenvolvimento ativo até:

  • Todos os navegadores os suportam.
  • Fornecemos códigos aos navegadores para que tenham suporte.
  • Está tudo bem, não funciona em todos os navegadores.

Edit2: O
Internet Explorer está quase morrendo com o novo projeto de navegador da Microsoft: Edge. Isso, entretanto, realmente não muda o quadro geral. Ainda temos muitos navegadores diferentes que precisamos oferecer suporte. Os desenvolvedores estão constantemente tentando ultrapassar os limites do que é possível. Isso significa que muitas vezes temos esse problema, alguma versão do navegador que desejamos oferecer suporte não oferece suporte a algum recurso do padrão (que geralmente é um pouco fluido), o que significa que precisamos fazer alguma solução alternativa ou usar estruturas que implementam o em recursos.

googletorp
fonte
Entendo, então navegadores diferentes têm sua própria implementação de acordo com o padrão ECMA-262 que Michael mencionou acima?
huy
3
@huy: sim - com vários níveis de suporte para / várias interpretações desse padrão, infelizmente ...
Andrzej Doyle,
1
-1, Não é um padrão oficial Javascript: ele é chamado ECMAscript e não há um órgão oficial por trás dele: en.wikipedia.org/wiki/Ecma_International
Hasen
Não tenho certeza por que você apontou o Internet Explorer como sendo pior no suporte do "padrão" ECMA do que qualquer outro navegador.
5
@ ראובן: Porque é / era. Por muito tempo, o IE não só tinha muitos bugs graves que outros navegadores não tinham, mas também faltavam recursos importantes que outros navegadores tinham. O IE8 e o 9 melhoraram bastante, portanto, a situação está mudando. Mas por muitos anos o IE era horrível, enquanto os outros navegadores tinham um bom suporte para ECMAScript. Além disso, ECMAScript é um padrão. Não sei por que você o colocou entre aspas.
Pauan
28

Você pode tentar com o site oficial ECMAscript,

http://www.ecmascript.org/

mas o útil é na verdade a implementação de cada navegador.

Gosto muito desta folha de dicas da Bíblia JavaScript de Danny Goodman:

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

Vencedor
fonte
Essa folha de cola está morta. Posso sugerir caniuse.com?
Grinn
Obrigado, vinculei ao novo link e expliquei um pouco o que era. Obrigado pelo aviso!
Victor
Legal, vou verificar isso.
Grinn
22

Eu diria que este é o "oficial": https://developer.mozilla.org/en/JavaScript

Você também tem a Especificação de linguagem ECMAScript, 5.1 Edition (ou em PDF , a especificação definitiva) .

E da Microsoft: Referência de linguagem JavaScript : "Esta documentação explica a implementação da Microsoft de JavaScript , que é compatível com a especificação de linguagem ECMAScript 5ª edição . Ele também fornece recursos adicionais que não estão incluídos nos Padrões Ecma."

Espo
fonte
8
O IE não tem um mecanismo JavaScript - ele implementa JScript (que é amplamente compatível). msdn.microsoft.com/en-us/library/yek4tbz0%28VS.85%29.aspx parece a referência oficial para isso.
Quentin,
3
Hmm ... developer.mozilla é muito útil, mas eu não o chamaria de "oficial". A especificação de linguagem ECMAScript está mais próxima de "oficial".
Steve Harrison,
4
A Especificação de linguagem ECMAScript é a referência oficial para ECMAScript. JavaScript é um superconjunto do ECMAScript, foi criado pela Netscape, e a Mozilla herdou o MDC da Netscape (embora o nome tenha mudado desde então)
Quentin
+1 para o padrão ECMAScript.
Jason S
@Quentin - Interessante que o título do link do MSDN que você faz referência agora é "Referência de JavaScript" . No entanto, o artigo do MSDN "JScript (ECMAScript3)" afirma: "JScript é a implementação da Microsoft da especificação da linguagem ECMA 262 (ECMAScript Edition 3). Com apenas algumas pequenas exceções (para manter a compatibilidade com versões anteriores), JScript é uma implementação completa de o padrão ECMA. " .
DavidRR
8

Se você estiver usando ECMAScript para a web (o que 99,9% das pessoas usam), além da sintaxe básica da linguagem (abordada na especificação ECMA-262 mencionada acima), o que você provavelmente está procurando é uma referência DOM - que é a API ECMAScript usada para interagir com documentos da web.

Estou muito surpreso que ninguém tenha mencionado o DOM api sofar. O padrão W3C DOM atual está aqui: http://www.w3.org/TR/DOM-Level-2-Core/

(btw, quanto à confusão de nomenclatura - ECMAScript é o nome do padrão oficial e "Javascript" e "JScript" são "garfos" proprietários da Netscape e da Microsoft)


fonte
3

Existe uma referência oficial, mas não está em um formato muito conveniente. É a especificação ECMA-262 . É um documento PDF único e muito grande, em vez de um conjunto pesquisável de páginas HTML.

Michael Aaron Safyan
fonte
3

Qualquer revisão das páginas JavaScript no MDC por um membro da equipe de documentação do Mozilla (como Eric Shepherd ) é oficial. JavaScript é mantido oficialmente pela Mozilla, portanto, apenas a documentação da Mozilla é oficial. Os únicos motores que suportam JavaScript são atualmente feitos pela Mozilla e todos os outros motores implementam ECMAScript. JavaScript e ECMAScript têm algumas diferenças (por exemplo, a letdeclaração incrível ).

Eli Gray
fonte
3

É muito difícil ter uma referência "oficial", desde que haja implementações (em todos os navegadores) e uma especificação (ECMAScript), mas nenhum teste de conformidade das implementações em relação às especificações.

Agora, porém, temos o pacote de conformidade EMCAScript 5 em http://es5conform.codeplex.com/ - e parece haver algum consenso de que as implementações ECMAScript ficarão mais próximas, tornando o ECMAScript mais provável de ser a referência oficial para a linguagem.

user195021
fonte
2

Acho a documentação do Netscape 4 JavaScript da velha escola muito útil para esse propósito. Embora eles estejam obviamente totalmente desatualizados, e alguns dos recursos do DOM neles, como Layers, tenham desaparecido há muito tempo, para o básico da linguagem eles são realmente sólidos.

Isso porque, antes da época da supremacia do IE e da padronização do ECMA, o JavaScript da Netscape era o JavaScript definitivo. Outros navegadores praticamente tiveram que implementar exatamente o que você vê nesses documentos antigos.

Eles também são muito mais fáceis de ler do que o documento ECMA-262, que mesmo pelos padrões dos documentos padrão é um horror absoluto.

bobince
fonte
1

Citação da Wikipedia:

Começos na Netscape

Em novembro de 1996, a Netscape enviou o JavaScript para a Ecma International ...

JavaScript é oficialmente gerenciado pela Mozilla Foundation ...

Então, na minha opinião, o ECMA é o padrão e o Mozilla é o oficial.

SandroMarques
fonte
0

Por “oficial”, acho que você quer dizer “escrito pelas pessoas responsáveis ​​pelo JavaScript”.

Apenas especulando aqui, na verdade, mas as pessoas responsáveis ​​pelo JavaScript (o ECMA) não ganham dinheiro diretamente com isso e provavelmente não têm nenhuma habilidade particular em escrever documentação de referência. Portanto, eles não têm incentivo nem capacidade para escrever uma boa referência.

Pessoalmente, gosto de JavaScript: the Definitive Guide da O'Reilly. Há uma sexta edição saindo em novembro.

Paul D. Waite
fonte
2
Sim, eles estão. A Sun possui a marca comercial para JavaScript, mas a licenciou para a Netscape. A Oracle comprou a Sun, então agora a Oracle possui a marca registrada (eles ainda a licenciam para a Mozilla). HTML e CSS são definidos pelo W3C, então isso é uma questão diferente. O mecanismo JS no Firefox contém muitos recursos proprietários (e incríveis) que não são encontrados em nenhum outro navegador. O criador do JavaScript (Brendan Eich) está no comitê oficial do ECMAScript e também trabalha para a Mozilla.
Pauan
1
Além disso, observe este link: en.wikipedia.org/wiki/ECMAScript#Dialects O Firefox tem o que é conhecido como "JavaScript 1.8.5" que, como já foi mencionado, contém muitos recursos avançados não encontrados em outros navegadores, como desestruturação / compreensão de objetos / matrizes , geradores / iteradores, blocos / declarações let, etc. Observe também a segunda nota de rodapé nesse link, que diz "Mozilla gerencia a versão oficial do JavaScript. A maioria das implementações não Mozilla que alegam" conformidade "com o JavaScript na verdade não suportam a maioria das extensões JavaScript; em vez disso, eles têm como alvo a ECMA-262, edição 3. "
Pauan
1
Observarei que ECMAScript é diferente de JavaScript. ECMAScript é um padrão definido pela Ecma. Os navegadores geralmente são muito bons no suporte ao padrão ECMAScript e, quando a maioria das pessoas diz "JavaScript", o que eles realmente querem dizer é ECMAScript. É uma pena que a situação e a terminologia sejam tão confusas, mas é isso. Portanto, na maior parte, a definição informal de JavaScript é "o que quer que os navegadores façam", mas oficialmente, a Mozilla é de fato responsável por isso.
Pauan
1
O que isso significa é que qualquer pergunta que exija uma "referência oficial do JavaScript" é muito vaga para ser respondida com precisão. Você tem o padrão ECMAScript oficial, as implementações reais de JavaScript nos navegadores, o MDC (que cobre a implementação oficial de JavaScript no Firefox) e, claro, a documentação não oficial muito popular como w3schools. Todos são úteis, portanto, não há realmente nenhuma referência "única correta" como existe para, digamos, Python.
Pauan
2
(talvez eu devesse ter postado isso como uma resposta real, em vez de uma série de comentários ... bem)
Pauan