A JavaScript library on GitHub, a job posting from your dream company, or a tweet you see on Twitter, EcmaScript comes up in many places regarding to JavaScript. But there is confusion even in ‘senior level’ job posting about the concept. There are different uses about EcmaScript which aims to standardize Scripting languages, and specifically JavaScript. Frankly, the idea of writing this article came up from one of this postings.

You may see such requirements in this postings:

  • Extensive knowledge on JavaScript and EcmaScript
  • ES5 and ES6 knowledge
  • ES6+ knowledge (the weirdest in my opinion)
  • ES.Next knowledge (and the most meaningful one)

The most googled terms about EcmaScript also clearly show a misunderstanding about the concept. Some top searches are;

  • Ecmascript vs Javascript
  • What is EcmaScript
  • What is EcmaScript 5
  • What is EcmaScript 6
  • Difference between EcmaScript and Javascript
  • Learn EcmaScript etc.

Lets answer below questions to clarify the topic.

What is ECMA International?

ECMA, with its long name “European Computer Manufacturers Association” is a non profit association. ECMA publishes standards on information and communication technologies and is not just about EcmaScript.

What is ECMAScript?

There are lots of standards published by ECMA International. ECMAScript 2021 is regulated by ECMA-262, one of this standard. ECMAScript is a general-purpose standard on programming languages-scripting languages.

What is the difference between EcmaScript and JavaScript?

ECMAScript is a standard. JavaScript is a programming language that obeys this standard.

I know JavaScript but not Ecma” is not meaningful. If you are trying to develop a new scripting language, you need to know Ecma standard very well, otherwise you don’t need to know it’s details to be a successful javascript developer. However as JavaScript is compatible with the standard, knowing the standard will help you better understand advanced JavaScript concepts.

ES5, ES6, ES7, ES8, ES9, ES10, ES11, ES12, ES.next … What are all of these numbers?

ECMAScript is revised and updated every year, so a new version is published yearly. Actually, there are no two different standards as ES11 and ES12, but ES 12 is just the revised version of ES 11. Basically, ES 12 is the superior of ES 5.

If “ES8+” is specified in a repo, it means that a javascript engine that supports ES8 and later can run these codes without using any converters.

A requirements of “ES8+” on the other hand is not reasonable in my opinion. It might be acceptable if they only say E8, which means you only need to know up to ES 8, but there is nothing as ES 8+ knowledge. I guess they are trying to say ‘the latest’ version which is ES.next.

Is ES6 enough?

Some job postings only requires ES6 experience. Then we can assume that we don’t need to know the async/await functions that come with ES8, the generator functions that come with ES9, the dynamic import feature that comes with ES10, the matchAll or Promise.allSettled methods that come with ES11, and the Promise.any or String.replaceAll() methods that come with ES12. I’m deducing that we can become the ‘Senior Javascript Developer’ described in the posting although we don’t know any features released after ES6.

Does an ECMAScript compliant code work on any environment?

There is no clear answer to this question. You cannot be sure that the JavaScript engine of the browser or other environments support the latest ECMAScript version. Since the ES5 version was released in December 2009, it can be said to be partially safe assuming your users does not use older devices However ES6 was released after 2015, and having compatibility issues may have higher probabilities.

You need to meet a new tool to safely overcome this problem: “BABEL

Babel is a tool that convers ECMAScript 2015+ code to a ES5 compatible version

You will be able to use ES6+ code without any problem If you use Babel as an add-on to module bundler tools such as Webpack, Gulp, Rollup.js. Consequently, you will ensure that the final code can be run for ES5 supporting engines.