I finally decided to write this post as well. I have collected many information from different links. When I need to remember fundamentals of JavaScript, I spend too much time in google. Because many developers just focused on specific features of JavaScript. In addition to this, different naming conventions are used, even they are mentioning about same topic 🙂
So, this is very very useful post for me. I hope that it will help any developers who need this kinds of collective documentation.
JavaScript was invented by Brendan Eich in 1995, and became an ECMA standard in 1997.
ECMAScript is the official name of the language.
From 2015 ECMAScript is named by year (ECMAScript 2015).
ECMAScript is often abbreviated to ES.
To read more details about ECMAScript, read from this link https://en.wikipedia.org/wiki/ECMAScript
ECMAScript Editions
- ECMAScript 1 (1997)
- ECMAScript 2 (1998)
- ECMAScript 3 (1999)
- ECMAScript 4 (Never released)
- ECMAScript 5 or ES5 (2009)
- ECMAScript 6 or ES6 or ECMAScript 2015 (2015)
- ECMAScript 7 or ES7 or ECMAScript 2016 (2016)
- ECMAScript 8 or ES8 or ECMAScript 2017 (2017)
- ECMAScript 9 or ES9 or ECMAScript 2018 (2018)
- ECMAScript 10 or ES10 or ECMAScript 2019 (2019)
ECMAScript 5 or ES5 Features (2009)
- The
"use strict"
Directive - Property Getters and Setters
- New Object Property Methods
String.prototype.trim()
JSON.parse()
JSON.stringify()
Date.now()
Date.prototype.toISOString()
Date.prototype.toJSON()
Array.isArray()
Array.prototype.every()
Array.prototype.filter()
Array.prototype.forEach()
Array.prototype.indexOf()
Array.prototype.lastIndexOf()
Array.prototype.map()
Array.prototype.reduce()
Array.prototype.reduceRight()
Array.prototype.some()
Object.create()
Object.getPrototypeOf()
Object.defineProperty()
Object.defineProperties()
Object.getOwnPropertyDescriptor()
Object.keys()
Object.getOwnPropertyNames()
Object.preventExtensions()
Object.isExtensible()
Object.seal()
Object.isSealed()
Object.freeze()
Object.isFrozen()
Function.prototype.bind()
ECMAScript 6 or ES6 or ECMAScript 2015 Features (2015)
- arrows functions
- classes
- enhanced object literals
- template strings
- destructuring
- default + rest + spread
- let + const
- iterators + for..of
- generators
- unicode
- modules
- module loaders
- map + set + weakmap + weakset
- proxies
- symbols
- subclassable built-ins
- promises
- math + number + string + array + object APIs
- binary and octal literals
- reflect api
- tail calls
ECMAScript 7 or ES7 or ECMAScript 2016 Features (2016)
Array.prototype.includes()
- Exponentiation Operator
ECMAScript 8 or ES8 or ECMAScript 2017 Features (2017)
Object.values()
Object.entries()
String.prototype.padStart()
String.prototype.padEnd()
Object.getOwnPropertyDescriptors()
- Trailing Commas in Function Parameter Lists
- Async Function (Async/Await)
- SharedArrayBuffer
- Atomics
ECMAScript 9 or ES9 or ECMAScript 2018 Features (2018)
- Tagged Template literal restriction removed
- “dotall” flag for Regular expression
- RegExp Named Group Captures ?
- Rest properties for Objects
- Spread properties for Objects
- RegExp Lookbehind Assertions
- RegExp Unicode Property Escapes
- Promise.prototype.finally()
- Asynchronous Iteration
ECMAScript 10 or ES10 or ECMAScript 2019 Features (2019)
- Array.Flat() & Array.flatMap()
- Object.fromEntries()
- String.trimStart() & String.trimEnd()
- Optional Catch Binding
- Function.toString()
- Symbol.prototype.description
- Well Formed JSON.Stringify()
- Array.Sort Stability
- Dynamic Import