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
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Declaración de campos de clase
- Métodos y campos privados
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);
Ejemplo 2
Obtener el tercer elemento del array fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
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);
Ejemplo 2
Obtener la tercera letra de la cadena de caracteres name:
const name = "W3Schools"; let letter = name[2];
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);
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.hasOwnProperty
pero admite todos los tipos de objetos.
instancia
Object.hasOwn(myObject, age)
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 }); }
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 |