JS TutorialLesson #141

ECMAScript 2022

Supported in all modern browsers since March 2023.

New Features in JavaScript 2022

Supported in all modern browsers since March 2023.

FeatureDescription
Array at()Returns an indexed element from an array
String at()Returns an indexed element from an string
RegExp /dPerform substring matches
Object.hasOwn()Check if a property is the own property of an object
error.causeLets you specify the reason behind an error
await importLets JavasSript modules wait for resources that require import before running.
Class field declarationsAllows for properties to be defined directly within a class
Private methods and fieldsAllows for private properties (#method and #field)

Browser Support

ECMAScript 2022 is supported in all modern browsers since March 2023:

Chrome 94Edge 94Firefox 93Safari 16.4Opera 80
Sep 2021Sep 2021Oct 2021Mar 2023Oct 2021

JavaScript Array at()

ES2022 intoduced the array method at():

Examples

Example Code

javascript
Try it Yourself
const fruits = ["Banana", "Orange", "Apple", "Mango"];

let fruit = fruits.at(2);

The at() method returns an indexed element from an array.

The at() method returns the same as [].

The at() method is supported in all modern browsers since March 2022:

Many languages allows negative bracket indexing like [-1] to access elements from the end of an > object / array / string. > This is not possible in JavaScript, because [] is used for accessing both arrays and objects. > obj[-1] refers to the value of key -1, not to the last property of the object. > The at() method was introduced in ES2022 to solve this problem.

JavaScript String at()

ES2022 intoduced the string method at():

Examples

Example Code

javascript
Try it Yourself
const name = "EA Academy";

let letter = name.at(2);

The at() method returns an indexed element from an string.

The at() method returns the same as [].


RegExp d Modifier

ES2022 added the /d modifier to express the start and end of the match.

Example

Example Code

javascript
Try it Yourself
let text = "aaaabb";

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

RegExp Modifiers are used to spescfy case-insensitive, and other global searches:

ModifierDescriptionTry it
iPerform case-insensitive matchingTry it
gPerform a global match (find all)Try it
mPerform multiline matchingTry it
dPerform substring matches (New in ES2022)Try it

Object hasOwn

ES2022 provides a safe way to check if a property is the own property of an object.

Object.hasOwn() is similar to Object.hasOwnProperty() but supports all object types.

Example

Example Code

javascript
Try it Yourself
Object.hasOwn(myObject, age)

Error Cause

Starting from ECMAScript 2022, the Error constructor (and its subclasses like TypeError, SyntaxError, etc.) supports an optional {cause} property.

This allows you to create chained errors - where one error includes another as its cause.

Example (before)

Example Code

javascript
Try it Yourself
try {

  // Create a JSON parse failure

  JSON.parse("blablablabla");

} catch(err) {

  let text = err.name + " " + err.message;

}

Example (now)

Example Code

javascript
Try it Yourself
try {

  try {

    // Create a JSON parse failure

    JSON.parse("blablablabla");

  } catch(err) {

    // Create a new error and include the original one as the cause

    throw new Error("Failed to load JSON", {cause:err});

  }

} catch(err){

  let text = err.name + " " + err.message;

  document.getElementById("demo").innerHTML = text;

}

JavaScript await import

JavasSript modules can now wait for resources that require import before running:

Example

Example Code

javascript
Try it Yourself
import {myData} from './myData.js';

const data = await myData();

JavaScript Class Field Declarations

Example

Example Code

javascript
Try it Yourself
class Hello {

  counter = 0; // Class field

}

const myClass = new Hello();

let x = myClass.counter;

JavaScript Private Methods and Fields

Example

Example Code

javascript
Try it Yourself
class Hello {

  #counter = 0;  // Private field

  #myMethod() {} // Private method

}

const myClass = new Hello();

let x = myClass.#counter;  // Error

myClass.#myMethod();      // Error

Interactive Code Examples

Examples

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
const fruits = ["Banana", "Orange", "Apple", "Mango"];

let fruit = fruits.at(2);

Examples

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
const name = "EA Academy";

let letter = name.at(2);

JS Example 3

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
let text = "aaaabb";

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

JS Example 4

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
Object.hasOwn(myObject, age)

Example (before)

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
try {

  // Create a JSON parse failure

  JSON.parse("blablablabla");

} catch(err) {

  let text = err.name + " " + err.message;

}

Example (now)

javascript
Try it Yourself
Interactive runnable JavaScript example from EA Academy.
Live Output Preview: