JavaScript has evolved significantly over the years, and with the introduction of ECMAScript (ES) standards, it has become a versatile and powerful programming language. In this blog, we’ll explore the new features introduced in ECMAScript versions 7, 8, 9, and 10, also known as ES7, ES8, ES9, and ES10 respectively. These updates bring numerous enhancements, making JavaScript development more efficient and expressive. So, let’s dive into the exciting world of ECMAScript and discover what these versions have to offer!

ES7 Features


The includes() method simplifies array element searching. It allows you to check if an array contains a specific element and returns a Boolean value. This feature eliminates the need for writing custom functions or using the indexOf() method to check for element existence.

const numbers = [1, 2, 3, 4, 5];
console.log(numbers.includes(3));  // Output: true
console.log(numbers.includes(6));  // Output: false

Exponentiation Operator (**):

The exponentiation operator ** provides a concise way to calculate exponentiation. It replaces the Math.pow() method, which can be cumbersome to use in certain cases.

console.log(2 ** 3);  // Output: 8
console.log(4 ** 0.5);  // Output: 2

ES8 Features


Async functions and the await keyword simplify asynchronous programming. They allow you to write asynchronous code that looks synchronous, making it easier to reason about and maintain. Async functions automatically wrap return values in promises, and the await keyword suspends the execution of the function until the promise is resolved.

async function fetchData() {
  try {
    const response = await fetch('');
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Error:', error);

Object.values() and Object.entries():

These new Object methods make it easier to iterate over object properties.
Object.values() returns an array of the object’s enumerable property values, while Object.entries() returns an array of key-value pairs.

const user = {
  name: 'John Doe',
  age: 25,
  email: '[email protected]'
console.log(Object.values(user));  // Output: ["John Doe", 25, "[email protected]"]
console.log(Object.entries(user));  // Output: [["name", "John Doe"], ["age", 25], ["email", "[email protected]"]]  

ES9 Features

Asynchronous Iteration:

ES9 introduced support for asynchronous iteration with the introduction of the for-await-of loop. This feature enables you to iterate over asynchronous data sources, such as Promises or streams, using a familiar syntax.

async function fetchUsers() {
  const userPromises = [getUser(1), getUser(2), getUser(3)];
  for await (const user of userPromises) {

Rest/Spread Properties:

The rest and spread syntax, previously available for arrays, are now extended to objects. You can use the three-dot (...) syntax to spread object properties into another object or to gather remaining properties into a new object.

const user = { name: 'John Doe', age: 25 };
const { name, ...details } = user;
console.log(name);  // Output: "John Doe"
console.log(details);  // Output: { age: 25 }

ES10 Features

Array.prototype.flat() and Array.prototype.flatMap():

These methods provide concise ways to flatten nested arrays (flat()) and perform mapping operations while flattening (flatMap()).
They make it easier to work with arrays of varying depths.

const numbers = [1, [2, [3]]];
console.log(numbers.flat());  // Output: [1, 2, [3]]

const numbers = [1, 2, 3];
console.log(numbers.flatMap(x => [x * 2]));  // Output: [2, 4, 6]

Optional Catch Binding:

ES10 allows you to omit the catch parameter in try-catch blocks by using an empty pair of parentheses catch{}. This feature is particularly useful when you don’t need to use the error parameter.

  try {
    // Code that may throw an error
  } catch {
    // Handle the error without an error parameter

String.prototype.trimStart() and String.prototype.trimEnd():

These methods provide a straightforward way to remove leading and trailing white spaces from strings. They complement the existing trim() method, enhancing string manipulation capabilities.

const text="   Hello, World!   ";
console.log(text.trimStart());  // Output: "Hello, World!   "
console.log(text.trimEnd());  // Output: "   Hello, World!"


The continuous evolution of ECMAScript has transformed JavaScript into a powerful and expressive programming language. ES7, ES8, ES9, and ES10 introduced a range of new features and enhancements, simplifying common programming tasks and improving developer productivity. As JavaScript continues to evolve, staying up to date with the latest ECMAScript features is essential for every JavaScript developer. So, embrace these new features and unlock the full potential of JavaScript in your projects. Happy coding!

Get More tutorials on Javascript

  • Credit goes to the respective owner!

    Leave a Reply

    Your email address will not be published. Required fields are marked *