ECMAScript
| ECMAScript | ||
|---|---|---|
|
Brendan Eich https://ecma-international.org/ | ||
| Informações gerais | ||
| Extensões comuns | isso é | |
| Paradigma | Multiparadigma : prototipagem , funcional , imperativo | |
| Apareceu em | 1 de janeiro de 1997 (25 anos, 9 meses e 15 dias) | |
| Desenhado por | Brendan Eich , Ecma Internacional | |
| implementações | SpiderMonkey , V8 , ActionScript , JScript , QtScript , InScript | |
| influenciado por | Self , HyperTalk , AWK , C , Perl , Python , Java , Scheme | |
| ECMAScript | ||
|---|---|---|
![]() | ||
| desenvolvedor | ||
|
Sun Microsystems , Ecma International | ||
|
ECMA-262 , ECMA-290 , ECMA-404] | ||
| Informações gerais | ||
| extensão de arquivo |
.es | |
| tipo mime |
application/ecmascript | |
| lançamento inicial | 1 de junho de 1997 (25 anos, 4 meses e 15 dias) | |
| Última versão |
7ª edição 1 de junho de 2016 (6 anos, 4 meses e 15 dias) [ 1 ] | |
| tipo de formato | linguagem de script | |
| estendido de | JavaScript e JScript | |
| formato aberto | ? | |
ECMAScript é uma especificação de linguagem de programação publicada pela Ecma International . O desenvolvimento começou em 1996 e foi baseado na popular linguagem JavaScript proposta como padrão pela Netscape Communications Corporation . Atualmente, é aceito como o padrão ISO/IEC 22275:2018.
ECMAScript define uma linguagem tipada dinamicamente inspirada em Java e outras linguagens de estilo C. Ele suporta alguns recursos de programação orientada a objetos por meio de objetos baseados em protótipos e pseudoclasses.
A maioria dos navegadores da Internet inclui uma implementação do padrão ECMAScript, bem como acesso ao Document Object Model para manipulação de páginas da web. JavaScript é implementado na maioria dos navegadores, o Internet Explorer da Microsoft usa JScript . O navegador Opera tinha seu próprio interpretador ECMAScript com extensões para suportar alguns recursos JavaScript e JScript, atualmente o Opera é baseado no Chromium (e usa seu interpretador). Cada navegador tem suas próprias extensões para o padrão ECMAScript, mas qualquer código que esteja em conformidade com o padrão deve funcionar em todos eles.
ActionScript , para Adobe Flash , também é baseado no padrão ECMAScript, com aprimoramentos que permitem mover, criar e analisar objetos dinamicamente enquanto o filme está em execução.
Desde o lançamento do padrão ECMAScript 1 em junho de 1997, existem as versões 2, 3 e 5, que é a mais usada atualmente (a versão 4 foi abandonada [ 2 ] ). Em junho de 2015, a versão ECMAScript 6 foi fechada e publicada. [ 3 ]
História
ECMAScript é uma especificação padrão para uma linguagem desenvolvida por Brendan Eich , empregada pela Netscape ; foi inicialmente chamado de Mocha, depois LiveScript e, finalmente, Javascript. [ 4 ] Em dezembro de 1995, a Sun Microsystems e a Netscape anunciaram o JavaScript em uma coletiva de imprensa. [ 5 ] Em março de 1996, o Netscape Navigator 2.0 foi lançado com suporte para JavaScript.
Devido ao grande sucesso do JavaScript como linguagem de script do lado do cliente para páginas da Web, a Microsoft desenvolveu um dialeto compatível da linguagem, chamado JScript , para evitar problemas legais com a marca registrada. JScript adicionou novos métodos para datas, para aliviar os problemas do ano 2000 ( Y2K ), causados em parte por métodos Javascript baseados em classes Java Date. [ 6 ] JScript foi incluído no Internet Explorer 3.0, lançado em agosto de 1996.
A Netscape submeteu o rascunho do JavaScript à Ecma International para padronização e para que eles trabalhassem em sua especificação ECMA-262, que começou em novembro de 1996. [ 7 ] A primeira edição do ECMA-262 foi adotada pela assembléia geral da Ecma em junho de 1997. Vários edições da linguagem padrão foram publicadas desde então. O nome "ECMAScript" foi um compromisso entre as organizações envolvidas na padronização da linguagem, especialmente entre Netscape e Microsoft, que disputavam o domínio das primeiras sessões padrão. Eich comentou que "ECMAScript sempre foi uma marca indesejada, que soava como uma doença de pele". [ 8 ]
Embora ambas as especificações JavaScript e JScript pretendam ser compatíveis com ECMAScript, elas também fornecem recursos adicionais, não descritos nas especificações ECMA. [ citação necessária ]
Versões
Existem onze versões do ECMA-262 publicadas. O trabalho na versão 11 do padrão foi concluído em junho de 2020. [ 9 ]
Allen Wirfs-Brock: ECMA-262, Editor de Projetos, 6ª Edição e Brian Terlson: ECMA-262, Editor de Projetos, 7ª a 10ª edições [ 10 ]
| Edição | Data de publicação | Alterações da edição anterior | editor |
|---|---|---|---|
| 1 | Junho de 1997 | Primeira edição | Guy L. Steele, Jr. |
| dois | Junho de 1998 | Alterações editoriais para manter toda a especificação alinhada com a norma internacional ISO/IEC 16262 | Mike Cowlishaw |
| 3 | Dezembro de 1999 | Adicionadas expressões regulares, melhor manipulação de strings, nova manipulação de instruções, manipulação de exceção try/catch, definição mais rigorosa de erros, formatação para saída numérica e outras melhorias. | Mike Cowlishaw |
| 4 | Abandonado | A quarta edição foi abandonada devido a divergências políticas quanto à complexidade do idioma. Muitos recursos propostos para a quarta edição foram completamente abandonados; alguns foram propostos para a edição ECMAScript Harmony. | |
| 5 | Dezembro de 2009 | Adiciona o modo estrito, um subconjunto destinado a fornecer melhor verificação de erros e evitar construtores propensos a erros. Ele esclarece várias ambiguidades na terceira edição e refina o comportamento das implementações do "mundo real" que diferem consistentemente dessa especificação. Ele adiciona alguns novos recursos, como getters e setters, uma biblioteca para suporte a JSON e uma reflexão mais completa sobre as propriedades do objeto. [ 11 ] | Pratap Lakshman , Allen Wirfs-Brock |
| 5.1 | Junho de 2011 | Esta edição 5.1 da Norma ECMAScript está totalmente alinhada com a terceira edição da norma internacional ISO/IEC 16262:2011. | Pratap Lakshman, Allen Wirfs-Brock |
| 6 | Junho de 2015 [ 12 ] | A sexta edição adiciona mudanças significativas de sintaxe para escrever aplicativos complexos, incluindo classes e módulos, definindo-os semanticamente nos mesmos termos de modo estrito da edição ECMAScript 5. Outros novos recursos incluem iteradores para / de loops, geradores e expressões de estilo gerador. Python , funções de endereço, dados binários, coleções (mapas, conjuntos, mapas fracos) e proxies (metaprogramação para objetos virtuais e wrappers). Sendo a primeira especificação "ECMAScript Harmony", também é conhecida como "ES6 Harmony". | Allen Wirfs-Brock |
| 7 | Junho de 2016 | A sétima edição foi uma mera atualização para a versão 6. Ela adiciona o método Array.prototype.includes() e o operador exponencial (**). | Brian Terlson |
| 8 | Junho de 2017 | A 8ª edição, oficialmente conhecida como ECMAScript 2017, foi finalizada em junho de 2017. [11] Inclui construtores async/await, que funcionam usando geradores e promessas.
|
Brian Terlson |
| 9 | Junho de 2018 | A 9ª edição, oficialmente conhecida como ECMAScript 2018, inclui operadores rest/spread para variáveis (três pontos: ...identificador), iteração assíncrona,Promise.prototype.finally()
|
Brian Terlson |
| 10 | Janeiro de 2019 | A 10ª edição, oficialmente conhecida como ECMAScript 2019, introduziu Array.flat(), Array.flatMap(), String.trimStart(), String.trimEnd(), erros opcionais no bloco catch, Object.fromEntries(),Symbol.description
|
Mathias Bynens |
| onze | Junho de 2020 | Veja a 11ª Edição – ECMAScript 2020 | Jordan HarbandKevin Smith |
| 12 | Junho de 2021 | Veja o 12º ECMAScript® 2021 |
Em junho de 2004, a Ecma International publicou o padrão ECMA-357, definindo uma extensão para ECMAScript, conhecido como ECMAScript for XML (E4X). A Ecma também definiu um "Perfil Compacto" para ECMAScript – conhecido como ES-CP, ou ECMA 327 – que foi projetado para dispositivos com recursos limitados, mas foi descartado e retirado em 2015. [ 13 ]
11ª edição – ECMAScript 2020
A 11ª edição, ou ECMAScript 2020, foi lançada em junho de 2020. Além de novas funcionalidades, esta versão inclui o tipo primitivo BigIntpara inteiros de tamanho arbitrário primitivo, o operador de coalescência nulo , encadeamento opcional (em inglês, encadeamento opcional ) e o objeto globalThis.
BigInits são criados com o construtor BigIntou com a sintaxe 10n, onde "n" é colocado após o número literal. BigInts permite a representação e manipulação de inteiros maiores que Number.MAX_SAFE_INTEGER, enquanto os números são representados por um valor IEEE 754 de 64 bits de precisão dupla. As funções integradas Mathnão são suportadas pelo BigInits; por exemplo, o poder de BigInts deve ser feito com o operador **em vez de Math.pow.
O operador de união nulo, ??, retorna seu operando do lado direito quando seu lado esquerdo é nullou undefined. Isso contrasta com o operador ||, que retornará "string"para todos os valores "falsy", como os abaixo:
Indefinido ?? "string" // -> "string" nulo ?? "cadeia" // "cadeia" falso?? "string" // -> falso NaN?? "string" // -> NaN
O encadeamento opcional permite acessar propriedades aninhadas de um objeto sem ter uma verificação AND em cada nível. Um exemplo é const zipcode = person?.address?.zipcode. Se alguma das propriedades não estiver presente, zipcodeserá undefined.
Com globalThis você pode escrever código que funcione em contextos de janela e não janela sem a necessidade de verificações extras.
ES.NEXT
ES.Next é um nome dinâmico para se referir a qualquer próxima versão que esteja sendo desenvolvida. Os recursos do ES.Next são mais corretamente conhecidos como propostas, porque, por definição, a especificação ainda não foi finalizada.
Veja também
Referências
- ↑ Padrão ECMA-262: Especificação de linguagem ECMAScript® 2016 . Recuperado em 13 de janeiro de 2017.
- ↑ Eich, Brendan (13 de agosto de 2008). Harmonia ECMAScript . Recuperado em 22 de julho de 2015 .
- ↑ campusMVP (19 de junho de 2015). "ECMAScript 6 agora é um padrão fechado" . Recuperado em 22 de julho de 2015 .
- ↑ Krill, Paul (23 de junho de 2008). Criador de JavaScript pondera passado e futuro | Mundo dos Desenvolvedores» . InfoMundo . Recuperado em 31 de outubro de 2013 .
- ^ "Press Release" . Web.archive.org. Arquivado a partir do original em 16 de setembro de 2007 . Recuperado em 31 de outubro de 2013 .
- ^ "Atualizações do roteiro de Brendan: popularidade" . weblogs.mozillazine.org . Arquivado do original em 17 de maio de 2008.
- ^ "Press Release" . Web.archive.org. Arquivado a partir do original em 3 de dezembro de 1998 . Recuperado em 31 de outubro de 2013 .
- ↑ "Haverá um sufixo de arquivo sugerido para es4?" . Mail.mozilla.org. 3 de outubro de 2006. Arquivado a partir do original em 21 de junho de 2020 . Recuperado em 31 de outubro de 2013 .
- ^ [1] Arquivado em 12/04/2015 no Wayback Machine .. EMCAScript. Recuperado em 2015-06-19.
- ^ "ECMA-260 10ª Edição" .
- ^ "Mudanças para JavaScript, Parte 1: EcmaScript 5" . YouTube. 18 de maio de 2009 . Recuperado em 31 de outubro de 2013 .
- ^ "É oficial: ECMAScript 6 é aprovado - InfoWorld" . www.infoworld.com (em inglês) . Recuperado em 20 de outubro de 2015 .
- ↑ 2015-03-24 Notas da Reunião . END discuta. Consulte também Padrões retirados do Ecma . ECMA.
