Work in progress

ES6 also know as ECMAScript 6 or ECMAScript 2015 (European Computer Manufacturers Association (ECMA)) is the move to make javascript more awesome and a better programming language. A lot of it is a syntactical sugar but there are some useful good additions to this language which we will see in this post.

This video is from Brendan Eich ( the creator of Javascript)

Let & Const:

let and const are introduced to ES6 for a blocked scope. For example var which is used very frequently in javascript is a function scope. All the declaration within the function get hoisted to the top of the function which can cause all sorts of issue if not used correctly.

Let and Const solve this problem. Both can be used within block scope. That means any time you have set a curly braces you have a block scope.


function hideReplies(topicId){

let previewText;

 const TEXT_SEPARATOR = '%%';
 previewText = TEXT_SEPARATOR+"Topid id "+topicId; 
 //console.log(TEXT_SEPARATOR);// This will throw an reference error
 console.log(previewText);// %%test%%

Function defaults:

Function defaults now allow you set a default value if the function is expecting a parameter and if that parameter is not send.


function loadProfiles(userNames){
 let namesLength = userNames.length;
 console.log("length "+userNames.length)

loadProfiles()//Throw TypeError: Cannot read property 'length' of undefined

Now you can do like this:

function loadProfiles(userNames =[]){
 let namesLength = userNames.length;
 console.log("length "+userNames.length)

loadProfiles(["a","b"]);//length 2
loadProfiles()// length 0

Rest and Spread Operators:

Spread operator is used where multiple arguments are passed  for function calls.

Example: Demo

var prices = [12, 20, 18];
var maxPrice = Math.max(...prices); 
console.log(maxPrice); //20

Rest parameter syntax allows us to pass an indefinite number of arguments as an array.


var showCategories = function (productId, ...categories) {
showCategories(123, 'Sam', 'Adams','Beer');

Object Literal Extension:

Object literal is a comma-separated list of name-value pairs wrapped in curly braces. Object literals encapsulate data, enclosing it in a tidy package. This minimizes the use of global variables which can cause problems when combining code.


var price = 5.99,
 quantity = 10;
var productView = {
 price: 7.99,
 quantity: 1,
 calculateValue() {
 return this.price * this.quantity;

for … of Loops

This is new syntax added similar to for But  for … of Loops works for everything : Array’s, Strings,Map, Set, WeakMap, and WeakSet.

For example:


var codes = "ABCDF";
var count = 0;
for (var code of codes) {


Template Literals

Template literals are string literals allowing embedded expressions. It also allows multi-line strings and string interpolation features with them. Note that you need to use back-tick (` `) for enclosing the string.


'use strict';
let invoiceNum = '1350';
console.log(`Invoice Number: ${invoiceNum}`);//1350

let message = `A


The destructuring syntax allows to extract data from arrays or objects into distinct variables.


'use strict';
let salary = ['20000', '50000', '75000']; 
let [ low, average, high ] = salary; 

let [ small, ...remaining ] = salary; 



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s