ECMAScript 2019

Número da versão do JavaScript

Versões antigas do JS são nomeadas por número: ES5 (2009) e ES6 (2015).

A partir de 2016, as versões são nomeadas por ano: ECMAScript 2016, 2017, 2018, 2019, ...

Novas características do ES2019:

Aviso

Essas características são relativamente novas.

Navegadores mais antigos podem precisar de código alternativo (Polyfill)

Método de String JavaScript trimStart()

ES2019 adicionou o método String ao JavaScript trimStart()

trimStart() A maneira como o método funciona é semelhante à trim() Da mesma forma, mas remove apenas os espaços do início da string.

Exemplo

let texto1 = "     Olá Mundo!     ";
let texto2 = texto1.trimStart();

Experimente você mesmo

Desde janeiro de 2020, todos os navegadores modernos suportam o JavaScript String trimStart():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
Em abril de 2018 Em janeiro de 2020 Em junho de 2018 Em setembro de 2018 Em maio de 2018

Método de String JavaScript trimEnd()

O ES2019 adicionou para o JavaScript trimEnd() métodos de string.

trimEnd() A maneira como o método funciona é semelhante à trim() Da mesma forma, mas remove apenas os espaços do final da string.

Exemplo

let texto1 = "     Olá Mundo!     ";
let texto2 = texto1.trimEnd();

Experimente você mesmo

Desde janeiro de 2020, todos os navegadores modernos suportam o JavaScript String trimEnd():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
Em abril de 2018 Em janeiro de 2020 Em junho de 2018 Em setembro de 2018 Em maio de 2018

Método de Objeto JavaScript fromEntries()

O ES2019 adicionou para o JavaScript fromEntries() Métodos de objeto.

fromEntries() O método cria um objeto a partir de pares iteráveis de chave/valor.

Exemplo

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);

Experimente você mesmo

Desde janeiro de 2020, todos os navegadores modernos suportam o JavaScript String trimEnd():

Chrome Edge Firefox Safari Opera
Chrome 73 Edge 79 Firefox 63 Safari 12.1 Opera 60
Em março de 2019 Em janeiro de 2020 Em outubro de 2018 Em março de 2019 Em abril de 2019

Bindeamento opcional catch

A partir do ES2019, se não necessário, o parâmetro catch pode ser omitido:

Exemplo

Antes de 2019:

try {
// código
catch (err) {
// código
}

Após 2019:

try {
// código
catch {
// código
}

Desde janeiro de 2020, todos os navegadores modernos suportam o binding opcional catch:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 58 Safari 11.1 Opera 53
Em abril de 2018 Em janeiro de 2020 Em janeiro de 2018 Em março de 2018 Em maio de 2018

Método de Array JavaScript flat()

O ES2019 adicionou para o JavaScript flat() Métodos de array.

flat() O método cria um novo array através da expansão do array aninhado.

Exemplo

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();

Experimente você mesmo

Desde janeiro de 2020, todos os navegadores modernos suportam o JavaScript Array flat():

Chrome Edge Firefox Safari Opera
Chrome 69 Edge 79 Firefox 62 Safari 12 Opera 56
Em setembro de 2018 Em janeiro de 2020 Em setembro de 2018 Em setembro de 2018 Em setembro de 2018

Método de Array JavaScript flatMap()

O ES2019 adicionou para o JavaScript flatMap() Métodos de array.

flatMap() O método primeiro mapeia todos os elementos do array, então cria um novo array através da expansão do array.

Exemplo

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);

Experimente você mesmo

Método estável de Array sort()

ES2019 Revisãodo método sort() do Array.

Antes de 2019, o padrão permitia algoritmos de ordenação não estáveis, como QuickSort.

Depois do ES2019, os navegadores devem usar algoritmos de ordenação estáveis:

Quando elementos são ordenados com base em um valor, esses elementos devem manter suas posições relativas a outros elementos com o mesmo valor.

Exemplo

const myArr = [
  {name:"X00",price:100 },
  {name:"X01",price:100 },
  {name:"X02",price:100 },
  {name:"X03",price:100 },
  {name:"X04",price:110 },
  {name:"X05",price:110 },
  {name:"X06",price:110 },
  {name:"X07",price:110 }
];

Experimente você mesmo

No exemplo acima, quando ordenado por preço, os resultados não são permitidos em outras posições relativas, conforme mostrado a seguir:

X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110

Revisão de JSON.stringify()

ES2019 Revisãodo método stringify() do JSON.

Antes de 2019, o JSON não podia serializar caracteres codificados com \.

Exemplo

let text = JSON.stringify("\u26D4");

Experimente você mesmo

Antes do ES2019, o JSON.stringify() retornaria caracteres Unicode danificados em pontos de código UTF-8 (U+D800 a U+DFFF), por exemplo, ���.

Após esta revisão, strings com pontos de código UTF-8 podem ser convertidas de forma segura usando JSON.stringify() e restauradas para a string original usando JSON.parse().

Símbolo de separação

Agora, é permitido usar delimitadores de linha e de parágrafo em textos de string (\u2028 e \u2029)

Antes de 2019, esses eram considerados delimitadores de linha e causavam exceções de erro:

Exemplo

// Isso é válido no ES2019:
let text = "\u2028";

Experimente você mesmo

Atenção

Agora, JavaScript e JSON compartilham as mesmas regras.

Antes do ES2019:

text = JSON.parse('"\u2028"') será analisado como ''.

text = '"\u2028"' forneceráErro de sintaxe

Revisão de Function toString()

ES2019 RevisãoMétodo Function toString().

O método toString() retorna uma string que representa o código-fonte da função.

A partir de 2019, toString() deve retornar o código-fonte da função, incluindo comentários, espaços em branco e detalhes de sintaxe.

Antes de 2019, diferentes navegadores retornavam variantes de função diferentes (por exemplo, sem comentários e espaços em branco). A partir de 2019, a função deve ser retornada exatamente conforme escrita.

Exemplo

function myFunction(p1, p2) {
  return p1 * p2;
}

Experimente você mesmo