ECMAScript 2022

Número de versión de JavaScript

Las versiones antiguas de ECMAScript se nombran con números: ES5 y ES6.

Desde 2016, las versiones se nombran con el año: ES2016, 2018, 2020, 2022.

Nuevas características de ES2022

Advertencia:

Estas características son relativamente nuevas.

Los navegadores antiguos pueden necesitar código alternativo (Polyfill).

JavaScript Array at()

ES2022 introdujo el método de array at():

Ejemplo 1

Obtener el tercer elemento del array fruits:

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

Prueba por ti mismo

Ejemplo 2

Obtener el tercer elemento del array fruits:

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

Prueba por ti mismo

at() El método devuelve el elemento especificado del array.

at() Método y [] Los resultados devueltos son los mismos.

A partir de marzo de 2022, todos los navegadores modernos soportan at() Método:

Chrome Edge Firefox Safari Opera
Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Abril de 2021 julio de 2021 julio de 2021 marzo de 2022 agosto de 2021

Nota:

Muchos lenguajes permiten el uso de índices negativos (como [-1])Acceder al elemento final de un objeto/arrays/cadena.

Esto no es posible en JavaScript porque [] Se utiliza para acceder a arrays y objetos. obj[-1] se refiere al valor de la clave -1, no al último atributo del objeto.

at() El método se introdujo en ES2022 para resolver este problema.

JavaScript String at()

ES2022 introdujo el método de cadena at():

Ejemplo 1

Obtener la tercera letra de la cadena de caracteres name:

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

Prueba por ti mismo

Ejemplo 2

Obtener la tercera letra de la cadena de caracteres name:

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

Prueba por ti mismo

at() Método devuelve el carácter especificado en la posición de índice de la cadena.

at() Método y [] Los resultados devueltos son los mismos.

A partir de marzo de 2022, todos los navegadores modernos soportan at() Método:

Chrome Edge Firefox Safari Opera
Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Abril de 2021 julio de 2021 julio de 2021 marzo de 2022 agosto de 2021

modificador d de RegExp

ES2022 añadió /d Modificadores, utilizados para representar el inicio y el final de la coincidencia.

instancia

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

Prueba por ti mismo

Los modificadores de RegExp se utilizan para especificar coincidencia sin distinción de mayúsculas y minúsculas, así como otras búsquedas globales:

Modificador Descripción Prueba
g Ejecutar coincidencia global (buscar todo). Prueba
i Ejecutar coincidencia sin distinción de mayúsculas y minúsculas. Prueba
d Ejecutar coincidencia de subcadena (nuevo en ES2022). Prueba
m Ejecutar coincidencia de múltiples líneas. Prueba

Object.hasOwn()

ES2022 proporciona un método seguro para verificar si una propiedad es una propiedad propia del objeto.

Object.hasOwn() similares a Object.prototype.hasOwnPropertypero admite todos los tipos de objetos.

instancia

Object.hasOwn(myObject, age)

Prueba por ti mismo

Causa de Error

ES2022 permite especificar la causa raíz del error a través de error.cause.

instancia

connectData(); 
  catch (err) { 
} 
  throw new Error("Fallo de conexión.", { cause: err }); 
}

Prueba por ti mismo

await import de JavaScript

Los módulos de JavaScript ahora pueden esperar los recursos que necesitan importar antes de ejecutarse:

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

Declaración de campos de clase de JavaScript

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

A partir de abril de 2021, todas las navegadores modernos soportan la declaración de campos de clase:

Chrome Edge Firefox Safari Opera
Chrome 72 Edge 79 Firefox 69 Safari 14.1 Opera 60
enero de 2019 Enero de 2020 septiembre de 2019 Abril de 2021 Enero de 2020

Métodos y campos privados de JavaScript

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

Desde junio de 2021, se admite el método y campo privado en todos los navegadores modernos:

Chrome Edge Firefox Safari Opera
Chrome 74 Edge 79 Firefox 90 Safari 14.1 Opera 62
Abril de 2019 Enero de 2020 Junio de 2021 Abril de 2021 Junio de 2019