ECMAScript 2022

Número da versão do JavaScript

As versões antigas do ECMAScript são nomeadas por números: ES5 e ES6.

A partir de 2016, as versões são nomeadas pelo ano: ES2016, 2018, 2020, 2022.

Novas funcionalidades do ES2022

Aviso:

Essas características são relativamente novas.

navegadores antigos podem precisar de código alternativo (Polyfill).

JavaScript Array at()

O ES2022 introduziu o método de array at():

Exemplo 1

Obter o terceiro elemento do array 'fruits':

const fruits = ['Banana', 'Orange', 'Apple', 'Mango'];
let fruit = fruits.at(2);

Experimente você mesmo

Exemplo 2

Obter o terceiro elemento do array 'fruits':

const fruits = ['Banana', 'Orange', 'Apple', 'Mango'];
let fruit = fruits[2];

Experimente você mesmo

at() O método retorna o elemento especificado no índice do array.

at() Método é [] Os resultados retornados são os mesmos.

A partir de março de 2022, todos os navegadores modernos suportam at() Método:

Chrome Edge Firefox Safari Opera
Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Abril de 2021 Julho de 2021 Julho de 2021 Março de 2022 Agosto de 2021

Atenção:

Muitas linguagens permitem o uso de índices negativos (como [-1]) Acessar o elemento final de um objeto/arranjo/string.

Isso não é possível no JavaScript porque [] Usado para acessar arrays e objetos. obj[-1] se refere ao valor da chave -1, não ao último atributo do objeto.

at() O método foi introduzido no ES2022 para resolver esse problema.

JavaScript String at()

O ES2022 introduziu o método de string at():

Exemplo 1

Obter a terceira letra da string 'name':

const name = "W3Schools";
let letter = name.at(2);

Experimente você mesmo

Exemplo 2

Obter a terceira letra da string 'name':

const name = "W3Schools";
let letter = name[2];

Experimente você mesmo

at() Método retorna o caractere especificado a partir da string.

at() Método é [] Os resultados retornados são os mesmos.

A partir de março de 2022, todos os navegadores modernos suportam at() Método:

Chrome Edge Firefox Safari Opera
Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Abril de 2021 Julho de 2021 Julho de 2021 Março de 2022 Agosto de 2021

modificador d RegExp

ES2022 adicionou /d Modificadores, usados para representar o início e o fim da correspondência.

instância

let text = "aaaabb";
let result = text.match(/(aa)(bb)/d);

Experimente você mesmo

Os modificadores RegExp são usados para especificar correspondência sem distinção entre maiúsculas e minúsculas, bem como outras buscas globais:

Modificador Descrição Experimente
g Executar correspondência global (procurar tudo). Experimente
i Executar correspondência sem distinção entre maiúsculas e minúsculas. Experimente
d Executar correspondência de substring (novidade ES2022). Experimente
m Executar correspondência de múltiplas linhas. Experimente

Object.hasOwn()

ES2022 oferece um método seguro para verificar se uma propriedade é um campo próprio do objeto.

Object.hasOwn() semelhante a Object.prototype.hasOwnPropertymas suporta todos os tipos de objetos.

instância

Object.hasOwn(myObject, age)

Experimente você mesmo

Causa do Erro

ES2022 permite especificar a causa raiz do erro com error.cause.

instância

connectData(); 
  catch (err) { 
} 
  throw new Error("Conexão falhou.", { cause: err }); 
}

Experimente você mesmo

await import JavaScript

Os módulos JavaScript agora podem esperar recursos necessários antes de executar:

import {myData} from './myData.js';
const data = await myData();

Declaração de campo de classe JavaScript

class Hello {
  counter = 0; // campo de classe
}
const myClass = new Hello();
let x = myClass.counter;

A partir de abril de 2021, todas as navegadores modernos suportam declarações de campos de classe:

Chrome Edge Firefox Safari Opera
Chrome 72 Edge 79 Firefox 69 Safari 14.1 Opera 60
Janeiro de 2019 Janeiro de 2020 Setembro de 2019 Abril de 2021 Janeiro de 2020

Métodos e campos privados em JavaScript

class Hello {
  #counter = 0;  // Campo Privado
  #myMethod() {} // Método Privado
}
const myClass = new Hello();
let x = myClass.#counter; // Erro
myClass.#myMethod();      // Erro

A partir de junho de 2021, métodos e campos privados são suportados em todos os navegadores modernos:

Chrome Edge Firefox Safari Opera
Chrome 74 Edge 79 Firefox 90 Safari 14.1 Opera 62
Abril de 2019 Janeiro de 2020 Junho de 2021 Abril de 2021 Junho de 2019