Uma Introdução a ECMAScript 6

Melhorias de escopo: let e const

Para declarar variáveis, usamos a palavra reservada var. Ocorre que em JavaScript, diferentemente de outras linguagens, o escopo onde uma variável declarada com var existe não é exatamente o bloco onde ela é declarada. A variável é “içada” (hoisted) ao topo da função (ou ao contexto global, se for declarada fora de uma function) e então se torna acessível também fora do bloco onde havia sido declarada. Vejamos o seguinte exemplo:

Melhorias com strings

O tipo string também teve melhorias incorporadas à nova especificação. A seguir, listamos as principais melhorias nesta área:

Multi-line strings

Até então, para criar strings em múltiplas linhas, era preciso recorrer ao caractere “\” para sinalizar a continuação da string na próxima linha:

Interpolação de strings

ECMA 6 oferece suporte nativo para interpolação de strings:

Functions

Uma série de melhorias na manipulação de funções também foram introduzidas na nova versão da ECMA 6:

Parâmetros default

Agora é possível ter parâmetros default, uma feature bastante comum em outras linguagens. Para tal, basta declarar o parâmetro e atribuir um valor a ele:

Rest parameters

Esta é uma feature que em algumas linguagens (como Java) é chamada de varargs. Trata-se de uma construção onde é especificado um parâmetro precedido de três pontos (…) e, então, pode-se passar como argumento um ou mais valores que internamente na função são tratados com um array:

Nova sintaxe para métodos

É possível definir métodos em objetos usando uma sintaxe mais enxuta:

Arrow functions

As arrow functions, cujo nome remete à sintaxe “=>”, permite a definição de closures de uma forma mais resumida:

Suporte a classes

Uma das mudanças mais interessantes na nova versão é a nova sintaxe para definição de classes. As versões anteriores ao ECMA6 suportam a criação de classes e herança basicamente pela manipulação da propriedade prototype. O exemplo a seguir ilustra como funciona este mecanismo em ECMA5 :

Módulos

A versão 6 define suporte nativo a módulos. Um módulo é um arquivo JavaScript, que pode exportar variáveis, funções e classes. Então, é possível importar estes símbolos e usá-los em outros scripts, similarmente ao que ocorre em outras linguagens, como python e java. Módulos são especialmente úteis para projetos grandes, pois ajudam na organização do código. O trecho de código a seguir exemplifica o funcionamento:

Conclusão

As melhorias na linguagem e na API padrão são várias e vão sem dúvida facilitar o dia a dia do desenvolvimento com JavaScript. Muitas outras áreas da linguagem não abordadas neste artigo foram melhoradas: expressões regulares, promises, async, entre outras. A nova versão foi construída tendo em mente manter a retrocompatibilidade com versão 5, de modo a “não quebrar a web”. Atualmente, o suporte nos browsers ainda está em desenvolvimento e o progresso pode ser acompanhado em https://kangax.github.io/compat-table/es6/. Não obstante o suporte incompleto dos navegadores, existe a possibilidade de usar a nova versão na web “traduzindo” o código em ECMA 6 para ECMA 5, por meio da ferramenta BabelJS . O BabelJS é um compilador source-to-source que consegue traduzir código ES6 para ES5 e pode ser usado através de ferramentas de automação de build, como Gulp e Grunt. Usando estas ferramentas, é possível se beneficiar das vantagens do ECMA6 nos projetos atuais antes que o suporte dos browsers tenha sido finalizado.

Links úteis

thdesenvolvedores

Blog de desenvolvimento da Touch Health