ECMAScript adalah spesifikasi bahasa scripting dari ECMA International,ini dibuat untuk membakukan JavaScript.ES ini memiliki banyak implementasi, dan yang populer adalah JavaScript.Umumnya,ECMAScript digunakan untuk script client side dan world wide web.

ES5 itu sendiri adalah singkatan dari ECMAScript 5 atau dikenal sebagai ECMAScript 2009,dan ES6 adalah ECMAScript 6 atau ECMAScript 2015.ES6 adalah peningkatan besar dalam JavaScript,yang memungkinkan kita untuk menulis kode untuk aplikasi kompleks.ES5 dan ES6 memiliki beberapa kesamaan dalam sifatnya,dan juga banyak perbedaan diantara mereka.Mari kita lihat beberapa perbedaan antara ES5 dan ES6.

Yang pertama adalah Tipe-Data,dalam ES5 mensupport data types primitive yaitu: string,number,boolean,null,dan undefined.Sedangkan ES6 terdapat beberapa tipe data tambahan ke JavaScript yaitu symbol untuk mensupport unique value.Dari segi performa sudah jelas ES6 memiliki kinerja yang lebih baik dari ES5.Manipulasi Object pun lebih lancar di ES6 karena destrukturisasi dan speed operators.Terdapat juga cara baru untuk mendefinisikan variabel yaitu const dan let,keduanya sama-sama mendeklarasikan variabel hanya saja const untuk yang nilainya tetap sedangkan let untuk yang nilainya berubah ubah.Selain itu terdapat juga arrow functions,dimana kita tidak perlu menambahkan keyword function lagi,contoh

// Function Biasa
var fungsi = function() {
    return "Classic Function";
}

//Arrow Function
const fungsi = () => {
    return "Arrow Function";
}

Selain Arrow Function terdapat juga konsep baru di loop yaitu for of,dengan tujuan melakukan iteration atas nilai nilai objek yang dapat diubah.

Di ES6 terdapat juga Spread Operator(…),dengan spread operator ini membuat kita lebih mudah untuk bekerja dengan array atau object.

Seperti bisa dilihat di line 20, spread operators digunakan untuk menyalin isi dari state dan mengatur ulang isi dari state.

Selain Spread Operators,terdapat juga Template Literal(`),dengan ini kita bisa melakukan string interpolation dengan mudah,contoh: 

//String interpolation
var a = 10;
var b = 15;

console.log('Hasil dari a+b adalah' + (a+b));

//String interpolation dengan Template Literal
let a = 10;
let b = 15;

console.log(`Hasil dari a+b adalah ${a+b}`);

Sampai sekarang,tidak ada browser yang sepenuhnya mendukung fitur ES6,namun kita bisa mengubah kode ES6 menjadi ES5 dengan transpilation,dengan menggunakan Babel atau Traceur.