JavaScript mendominasi web – dan ECMAScript, inti dari bahasa tersebut, semakin matang. Spesifikasi baru (ES6 atau JS2), yang diharapkan rilis pertengahan tahun, menghadirkan banyak inovasi yang sudah dapat diuji. Firefox saat ini menawarkan dukungan terbaik , tetapi polyfill melalui transpiler seperti Google Traceur juga dimungkinkan. Berikut adalah gambaran singkat tentang fitur-fitur baru ES6.
Kata kunci new let melakukan banyak hal lebih baik daripada var : pelingkupan sekarang berperilaku persis seperti dalam bahasa lain (C/C++, Java), itulah sebabnya blok if sekarang juga memiliki cakupannya sendiri. Hoisting, yaitu memprioritaskan deklarasi variabel (bukan penetapan nilai) dalam cakupan masing-masing, juga akan diperbaiki:
console.log(x); var x = 'foo'; // undefined console.log(y); let y = 'bar'; // not initialized
Jumlah inovasi lainnya besar: konstanta (const), nilai default untuk fungsi (fungsi pow(a,b=2) { return Math.pow(a,b); }), notasi baru untuk fungsi (let pow = (a,b=2) => Math.pow(a,b);), berbagai fungsi baru (repeat(), berisi(), startWith(), find(), findIndex()), konstruksi loop baru untuk ... of.
Yang juga patut disebutkan adalah tipe data baru Set, Map, Proxy dan Symbol, kemampuan untuk mengimpor (bagian lain) file JavaScript dengan impor dan sintaksis intuitif baru untuk kelas dan warisan. Namun seringkali ada juga hal-hal kecil namun ditunggu-tunggu seperti kemungkinan terjadinya jeda baris pada string literal (perhatikan tanda kutip khusus):
`foo bar`
JavaScript sejak lama lebih dari sekadar alat untuk trik-trik kecil di situs web – ia digunakan untuk menciptakan aplikasi web yang canggih dan berkinerja tinggi yang sama bagusnya dengan aplikasi desktop. Dengan banyaknya fitur baru yang bermanfaat dan dukungan yang ada untuk ES6, pemrograman menjadi dua kali lebih menyenangkan.
Siapa yang tidak selalu ingin memeriksa persamaan dua angka dengan bantuan konstanta baru Number.EPSILON , yang nilainya adalah selisih antara 1 dan nilai floating point berikutnya yang lebih tinggi?
let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;