ECMAScript
# ECMAScript

ECMAScript é um padrão de linguagens de programação, incluindo JavaScript, JScript, e ActionScript, padronizada pela Ecma International na especificação ECMA-262 e ISO/IEC 16262. Esta linguagem é usada em tecnologias para Internet para a criação de scripts executados no cliente e no servidor usando ambientes de execução como Node.js, Deno, e Bun.

## ECMAScript, ECMA-262, JavaScript

ECMA-262, ou ECMAScript Language Specification, define a linguagem ECMAScript. ECMA-262 especifica apenas a sintaxe da linguagem e a semântica da Interface de programação de aplicações base, tais como Array, Function, and globalThis, enquanto implementações válidas do JavaScript adicionam sua própria funcionalidade como entrada/saída e manipulação do sistema de arquivos.

## História

Em dezembro de 1995, a Sun Microsystems e a Netscape Communications Corporation anunciaram o JavaScript em um press release - na tentativa de capitalizar com o sucesso da linguagem Java - baseado nos trabalhos de Brendan Eich da Netscape sob o nome Mocha e, mais tarde, LiveScript. Em março de 1996 a Netscape Communications Corporation lançou o Navegador Netscape 2.0, com suporte para JavaScript. Com o sucesso do JavaScript como linguagem de scripting para o desenvolvimento de páginas web, a Microsoft, por sua vez, desenvolveu uma linguagem bastante próxima batizada de JScript, incluída mais tarde no Internet Explorer 3.0, lançado em agosto de 1996.
A Netscape submeteu as especificações do JavaScript para padronização na organização padronizadora ECM International for Standardization; resultando assim no novo padrão ECMAScript, o trabalho na especificação ECMA-262 começou em novembro de 1996 e, sua primeira edição foi adaptada pela ECMA General Assembly em junho de 1997.
ECMAScript é uma especificação de linguagem de scripts padronizada pelo ECMA-262. As linguagens JavaScript, JScript e ActionScript seguem a ECMAScript, porém cada um provê recursos adicionais não descritos na especificação ECMA.

## Versões
### ES6 ou ES2015

A edição ECMAScript6 (ES6 ou ES2015) adiciona nova sintaxe para escrever aplicativos complexos (como classes e módulos), mas os define semanticamente nos mesmos termos que o modo estrito. Outros recursos incluem iterações e repetições for/of, funções de seta/arrow, dados binários, arrays digitados, coleções (mapas e conjuntos), promessas, e aprimoramentos matemáticos.

### ES7 ou ES2016

A edição ECMAScript7 (ES7 ou ES2016) do padrão pretende continuar a reforma da linguagem, com isolamento de código, controle de efeitos e habilitação de biblioteca, operador de exponenciação (**), e Array.prototype.includes.

### ES8 ou ES2017

A edição ECMAScript8 n(ES8 ou ES2017) incluem recursos de simultaneidade e atômica, transferência de dados binários de cópia zero, aprimoramentos matemáticos, integração sintática com promessas (aguardar / assíncrono), fluxos observáveis, tipos de SIMD (método de operação de computação paralela), melhoria da meta-programação com classes, propriedades de classe e instância, sobrecarga de operador, tipos de valor, registros, tuplas and traits.