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
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Declaração de campos de classe
- Métodos e campos privados
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);
Exemplo 2
Obter o terceiro elemento do array 'fruits':
const fruits = ['Banana', 'Orange', 'Apple', 'Mango']; let fruit = fruits[2];
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);
Exemplo 2
Obter a terceira letra da string 'name':
const name = "W3Schools"; let letter = name[2];
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);
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.hasOwnProperty
mas suporta todos os tipos de objetos.
instância
Object.hasOwn(myObject, age)
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 }); }
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 |