Just what the hell is ECMAScript?
September 27, 2021
When reading the documentation for wherever JavaScript framework you want to learn, you quickly notice the different variations in syntax.
Even the most primitive of statements are different.
Take declaring a variable as an example:
var varName=[];
let varName=[];
const varName=[];
How about declaring a function:
function funcName(params){
}
const funcName= function(params){}
const funcName=(params)=>{}
Well technically the first one is a function declaration while the other two are function expressions written with two different syntaxes (let’s call it the old way and the new way).
And like that, you’ll find examples not only for data types like arrays and strings but also for things like loops.
for(let i=0; condition; expression)
for(index in object)
for(prop of object)
Why the variation in syntax?
JavaScript is a scripting language.
A programming language is a set of strings that produce machine code that a machine then uses to execute instructions and produce an output.
On the other hand, a scripting language is a set of strings that directly tell a program what to do.
In short, a programing language is used to control a machine, while a scripting language is used to control a program.
JavaScript is was originally meant to control Netscape Navigator, the browser.
But as JavaScript gained popularity in the late 90s and became the scripting language of other popular browsers at the moment (like Mozilla Firefox, and Internet Explorer), combined with the rapid growth of the internet, the need to standardize the language became important.
Enter Ecma International
Who?
The European Computer Manufacturers Association, ECMA.
Why? Europe? That’s perhaps a story I’ll research another time, but perhaps is their “business-like” approach to setting standards which they claim results in better standards and setting them faster 🤷.
Nevertheless, they’ve been in charge of setting standards for JavaScript.
In 1997 they specified ECMAScript1 or ES1 as the first JavaScript standard.
The Modern Web and the push for JavaScript Modernization
As more and more scripting was done for the browser, the demand to include more advanced features in JavaScript increased.
These features were already part of many programming languages, including C and Java, the programming languages that JavaScript draws inspiration from.
The modern web starts around 2008 as more and more websites start implementing methods of updating information on web pages without needing to reload the page.
This is accomplished through the use of a browser API called XMLHttpRequest and some JavaScript, collectively called AJAX for Asynchronous Javascript and XML.
In 2009, Ecma International introduces the first major revision to JavaScript, ECMAScript 2009 aka ES5 (ES2 to ES3 were minor releases, and ES4 was never released).
The next push in the modern web comes from the proliferation of reactivity and reactive JavaScript frameworks.
Reactivity is a way of keeping the DOM in sync with variables in JavaScript.
With that came the next major revision to JavaScript, ECMAScript 2015 aka ES6.
Full-Stack Javascript, the latest modern web push
Web applications are composed of a front-end (browser or client-side) and a back-end (server-side).
When developing a web application, we often summarize the technology used by our application, aka the stack, with a short acronym.
For example, a web application that uses Linux for the hosting OS, Apache for serving HTTP requests, PHP for backend scripting, and mysql for storing data in a database, would be called a LAMP stack.
Because JavaScript lacked the features found in the more advanced backend languages, the back-end of applications were written in languages other than JavaScript.
But I guess as applications grow and companies need to hire more developers, it became cumbersome to maintain two code bases. The front-end is written in JavaScript, and the back-end is written in another language.
So back-end technologies started to emerge that would use JavaScript. The most popular being NodeJS.
With this, the demand to use JavaScript as a general programing language has increased significantly, and that means not only implementing missing features but also implementing features found in modern programming languages, like asynchronicity and support for Object-oriented and functional programming.
Learn more about the history of JavaScript / ECMAScript.
Browser Support
ECMAScript 1 through 6 is fully supported in all modern browsers. Here is a full list of browser support for JavaScript.