Masukkan Password
33 Versi JavaScript & ECMAScript
Lecture ini membahas versi-versi JavaScript, sejarah JavaScript, dan hubungan JavaScript dengan ECMAScript. Ini memang agak membingungkan di awal karena ada istilah JavaScript, ECMAScript, ES5, ES6, ES2015, dan sebagainya.
Saya akan jelaskan dari dasar supaya semuanya nyambung.
1. Gambaran besarnya dulu
Hal paling penting dari lecture ini adalah:
JavaScript adalah nama bahasa pemrogramannya, sedangkan ECMAScript adalah standar/spesifikasi yang menjadi dasar perkembangan JavaScript.
Jadi jangan menganggap:
JavaScript ≠ ECMAScript
dalam arti dua bahasa yang sama sekali berbeda.
Lebih tepat:
ECMAScript
↓
standar/spesifikasi
↓
JavaScript mengimplementasikan standar tersebut
Kemudian versi JavaScript biasanya kita sebut berdasarkan versi ECMAScript:
ES1
ES3
ES5
ES6 / ES2015
ES2016
ES2017
...
2. Kenapa kita perlu belajar versi JavaScript?
Karena JavaScript terus berkembang.
JavaScript zaman dulu tidak sama dengan JavaScript yang kita gunakan sekarang.
Misalnya dulu kita sering menggunakan:
var name = "John";
Kemudian sejak ES6/ES2015 kita mendapatkan:
let name = "John";
const age = 20;
Kita juga mendapatkan banyak fitur baru seperti:
const numbers = [1, 2, 3];
const doubled = numbers.map(number => number * 2);
Ada juga:
- arrow function
- class
- template literal
- destructuring
- modules
- promises
- dan banyak lainnya.
Jadi ketika seseorang berkata:
“Ini fitur ES6.”
Kita perlu tahu maksudnya.
Atau ketika developer mengatakan:
“Apakah browser lama mendukung fitur ini?”
Kita juga perlu memahami bahwa tidak semua fitur JavaScript baru didukung oleh browser lama.
3. Analogi sederhana: bahasa dan aturan
Bayangkan ada sebuah bahasa bernama Bahasa X.
Kemudian ada sebuah lembaga yang membuat buku aturan resmi tentang Bahasa X.
Misalnya:
Bahasa X
↓
mengikuti
↓
Buku standar Bahasa X
Dalam JavaScript kira-kira:
JavaScript
↓
mengikuti
↓
ECMAScript specification
Jadi:
JavaScript
Adalah nama bahasa pemrogramannya.
ECMAScript
Adalah standar/spesifikasi yang mendefinisikan bagaimana bahasa tersebut bekerja dan fitur apa yang tersedia.
4. Sejarah awal JavaScript
Sekarang kita mundur ke tahun 1995.
JavaScript dibuat oleh:
Brendan Eich
ketika dia bekerja di Netscape.
JavaScript awalnya dibuat untuk digunakan di browser Netscape.
Pada waktu itu tujuan utamanya adalah membuat halaman web menjadi lebih interaktif.
Misalnya:
HTML
↓
menampilkan halaman
JavaScript
↓
membuat halaman bisa bereaksi terhadap user
Contohnya sekarang kita bisa melakukan:
alert("Hello World");
atau:
button.addEventListener("click", ...);
Tetapi konsep JavaScript pada awalnya memang sangat erat dengan browser.
5. Nama JavaScript ternyata tidak langsung JavaScript
Ini bagian sejarah yang menarik.
Nama awalnya adalah:
Mocha
Kemudian berubah menjadi:
LiveScript
Dan akhirnya:
JavaScript
Kenapa namanya JavaScript?
Pada saat itu Java sedang sangat populer.
Kemudian diputuskan bahwa nama yang mirip dengan Java bisa membantu popularitas bahasa baru tersebut.
Jadi nama:
JavaScript
lebih merupakan strategi marketing.
Bukan karena JavaScript dibuat dari Java.
6. JavaScript bukan Java
Ini penting banget untuk pemula.
Walaupun namanya:
JavaScript
dan:
Java
keduanya adalah bahasa pemrograman yang berbeda.
Jadi jangan berpikir:
“JavaScript adalah versi Java untuk browser.”
❌ Bukan.
JavaScript memiliki sejarah, syntax, runtime, dan ekosistem sendiri.
7. Kenapa muncul ECMAScript?
JavaScript awalnya sangat sukses di Netscape.
Kemudian browser-browser lain juga mulai ingin mendukung JavaScript.
Masalahnya:
Bagaimana memastikan semua browser mempunyai aturan JavaScript yang sama?
Bayangkan kalau browser A mengatakan:
JavaScript bekerja seperti ini.
sedangkan browser B mengatakan:
Tidak, JavaScript bekerja seperti ini.
Akan menjadi kacau.
Maka dibutuhkan standar.
8. ECMAScript menjadi standar
JavaScript kemudian distandarkan melalui organisasi standardisasi yang sekarang dikenal sebagai Ecma International.
Standarnya disebut:
ECMAScript
Jadi:
JavaScript = bahasa
ECMAScript = spesifikasi/standar
Inilah alasan kita sering melihat istilah:
ECMAScript 5
ECMAScript 6
ECMAScript 2015
dan disingkat:
ES5
ES6
ES2015
9. Apa itu ES?
ES adalah singkatan dari:
ECMAScript
Jadi:
ES5
berarti:
ECMAScript 5
dan:
ES6
berarti:
ECMAScript 6
10. Versi-versi awal JavaScript
Sekarang kita masuk ke timeline.
Secara sederhana:
1995 → JavaScript dibuat
1997 → ES1
1998 → ES2
1999 → ES3
2009 → ES5
2015 → ES2015 / ES6
2016 → ES2016
2017 → ES2017
...
Ada satu hal penting:
ES4 tidak pernah resmi dirilis.
11. ES1 — 1997
ES1 adalah standar ECMAScript pertama.
ES1
1997
Ini berisi dasar-dasar bahasa seperti:
- variable
- function
- object
- control flow
- dan konsep dasar lainnya.
Jadi banyak hal yang sudah kita pelajari sebelumnya berasal dari fondasi awal bahasa tersebut.
Misalnya:
let x = 10;
Konsep variable.
Atau:
function greetings() {
console.log("Hello");
}
Konsep function.
Atau:
if (x > 10) {
console.log("Greater");
}
Konsep control flow.
12. ES2 — 1998
Kemudian:
ES2
1998
ES2 tidak membawa perubahan besar.
Lebih banyak berisi:
- revisi
- klarifikasi
- penyesuaian terhadap standar.
Jadi tidak perlu terlalu fokus menghafal fitur ES2.
13. ES3 — 1999
Kemudian:
ES3
1999
ES3 membawa beberapa fitur penting.
Di antaranya:
Regular Expressions
Untuk bekerja dengan pola teks.
Contoh:
/hello/
try...catch
Untuk error handling:
try {
// kode
} catch (error) {
// menangani error
}
switch
Yang baru saja kita pelajari:
switch (day) {
case 1:
console.log("Monday");
break;
}
do...while
Yang juga sudah kita pelajari:
do {
console.log(i);
i++;
} while (i <= 10);
Jadi sekarang kita bisa melihat bahwa beberapa materi lecture sebelumnya memang berasal dari perkembangan JavaScript di versi-versi awal.
14. ES4 tidak pernah dirilis
Setelah ES3, ada rencana untuk membuat:
ES4
Tetapi ES4 akhirnya tidak pernah resmi dirilis.
Jadi jangan bingung kalau timeline langsung lompat:
ES3
↓
ES5
15. ES5 — 2009
Kemudian datang:
ES5
2009
Ini adalah versi yang sangat penting.
ES5 membawa banyak fitur baru dan peningkatan terhadap JavaScript.
Salah satu yang terkenal adalah:
Strict Mode
Contohnya:
"use strict";
ES5 juga memperkenalkan berbagai array methods.
Misalnya:
forEach()
map()
filter()
reduce()
Kita akan mempelajari beberapa di antaranya nanti.
16. Kenapa ES5 sangat penting?
Karena ES5 memiliki dukungan browser yang sangat luas.
Jadi untuk waktu yang lama, ES5 menjadi semacam:
“versi JavaScript yang relatif aman digunakan bahkan untuk browser lama.”
Tetapi perlu hati-hati memahami konteks ini.
Sekarang kita hidup di tahun 2026, jadi sebagian besar browser modern sudah mendukung fitur JavaScript jauh lebih baru.
Pernyataan “ES5 aman untuk browser lama” terutama penting untuk memahami kondisi kompatibilitas pada era ketika ES5 diperkenalkan.
17. Kemudian datang ES6
Nah, ini bagian yang paling terkenal.
Pada tahun:
2015
lahirlah:
ES6
Tetapi ES6 memiliki nama resmi:
ECMAScript 2015
Jadi:
ES6 = ES2015
Ini adalah versi yang sama.
18. Kenapa disebut ES6 dan ES2015?
Karena penamaan ECMAScript berubah.
Sebelumnya berdasarkan nomor:
ES1
ES2
ES3
ES5
Kemudian setelah ES6:
ES2015
ES2016
ES2017
ES2018
...
Jadi kamu akan sering melihat dua istilah:
ES6
ES2015
dan keduanya berarti versi yang sama.
19. ES6 adalah perubahan besar
ES6/ES2015 dianggap sebagai salah satu update terbesar dalam sejarah JavaScript.
Banyak fitur modern diperkenalkan.
Beberapa di antaranya sudah kamu pelajari.
let dan const
Sebelum ES6, kita banyak menggunakan:
var name = "John";
ES6 memperkenalkan:
let name = "John";
const age = 20;
Ini sudah kita pelajari di lecture variable.
Arrow function
ES6 memperkenalkan syntax:
const add = (a, b) => {
return a + b;
};
Atau bentuk singkat:
const add = (a, b) => a + b;
Template literals
Sebelumnya kita bisa menggunakan:
"Hello " + name
Kemudian ES6 memberikan:
`Hello ${name}`
Ini juga sudah pernah kita bahas.
Class
ES6 memperkenalkan syntax class:
class User {
constructor(name) {
this.name = name;
}
}
Destructuring
Misalnya:
const user = {
name: "John",
age: 20
};
const { name, age } = user;
Modules
ES6 memperkenalkan sistem module:
export
import
Misalnya:
export function add(a, b) {
return a + b;
}
Kemudian:
import { add } from "./math.js";
Promises
ES6 juga memperkenalkan Promise, yang sangat penting untuk asynchronous JavaScript.
Contohnya:
fetch("/users")
.then(response => response.json())
.then(data => console.log(data));
Nanti ketika masuk ke asynchronous JavaScript, konsep ini akan sangat penting.
20. ES6 vs ES2015
Sekali lagi, jangan sampai menganggap ini dua versi berbeda.
ES6
↓
nama berdasarkan urutan
↓
ECMAScript 6
ES2015
↓
nama berdasarkan tahun
↓
ECMAScript 2015
Tetapi:
ES6 === ES2015
Secara konsep: versi yang sama.
21. Bagaimana dengan browser lama?
Nah, ini alasan kenapa pembahasan versi JavaScript penting.
Misalnya kita punya kode:
let name = "John";
let diperkenalkan di ES6.
Browser modern:
✅ memahami let
Browser yang sangat lama:
❌ mungkin tidak memahami let
Akibatnya kode bisa gagal dijalankan.
Hal yang sama berlaku untuk fitur-fitur JavaScript modern lainnya.
Misalnya:
const
=>
class
Promise
async/await
...
Dukungan browser untuk masing-masing fitur tidak selalu muncul pada waktu yang sama.
22. Tapi sekarang JavaScript dirilis setiap tahun
Ini perubahan yang sangat penting.
Sebelum 2015, kita bisa melihat pola:
ES1
↓
ES2
↓
ES3
↓
...
↓
ES5
↓
banyak tahun
↓
ES2015
ES2015 adalah update yang sangat besar.
Setelah itu, Ecma International beralih ke annual release cycle.
Artinya kira-kira:
Setiap tahun ada versi ECMAScript baru.
Contohnya:
2015 → ES2015
2016 → ES2016
2017 → ES2017
2018 → ES2018
2019 → ES2019
...
23. Kenapa sekarang update dibuat setiap tahun?
Daripada menunggu bertahun-tahun lalu mengeluarkan update yang sangat besar seperti ES2015, lebih baik:
sedikit fitur
↓
setiap tahun
↓
sedikit fitur
↓
setiap tahun
Jadi perkembangan bahasa menjadi lebih bertahap.
Bayangkan dua cara berikut.
Cara lama
Tunggu 6 tahun
↓
████████████████
update besar
Cara baru
2016 → ██
2017 → ██
2018 → ██
2019 → ██
2020 → ██
...
Lebih mudah mengembangkan standar secara bertahap.
24. Kenapa kamu sering mendengar “ES6” tetapi jarang “ES7”?
Karena setelah ES6, penamaan berdasarkan tahun menjadi lebih umum.
Jadi:
ES6 = ES2015
Kemudian:
ES2016
ES2017
ES2018
...
Walaupun kamu mungkin masih mendengar istilah:
ES7
untuk ES2016.
Secara umum, lebih jelas menggunakan:
ES2016
daripada ES7.
25. “Modern JavaScript” itu apa?
Ini juga istilah yang sangat penting.
Secara sederhana:
Modern JavaScript adalah JavaScript dengan fitur-fitur ECMAScript yang lebih baru dibanding JavaScript versi lama.
Misalnya:
let
const
adalah fitur modern dibanding:
var
Kemudian:
const add = (a, b) => a + b;
menggunakan arrow function.
Atau:
const message = `Hello ${name}`;
menggunakan template literal.
Jadi ketika kamu membaca:
“Learn Modern JavaScript”
biasanya maksudnya adalah belajar JavaScript dengan fitur dan praktik bahasa yang lebih baru.
26. Apakah modern JavaScript berarti hanya ES6?
❌ Tidak.
Ini kesalahpahaman yang cukup umum.
ES6 memang merupakan loncatan besar dan menjadi fondasi JavaScript modern.
Tetapi modern JavaScript mencakup banyak versi setelahnya:
ES2015
ES2016
ES2017
ES2018
ES2019
ES2020
...
Jadi jangan berpikir:
Modern JavaScript = ES6 saja
Lebih tepat:
Modern JavaScript
↓
ES2015 + ES2016 + ES2017 + ...
27. Ada satu hal penting tentang “browser support”
Lecture mengatakan bahwa browser lama mungkin tidak mendukung fitur ES6.
Itu benar secara umum, tetapi ada konsep yang perlu kamu pahami:
Dukungan JavaScript tidak selalu berdasarkan “browser ini mendukung ES6 atau tidak” secara keseluruhan.
Karena browser bisa saja:
mendukung fitur A
mendukung fitur B
tidak mendukung fitur C
Misalnya sebuah browser mungkin mendukung let, tetapi tidak mendukung suatu API modern tertentu.
Jadi dalam praktik modern, developer sering memeriksa dukungan per fitur, bukan hanya:
“Browser ini ES6 atau bukan?”
28. Bagaimana developer menangani browser lama?
Ada teknologi bernama transpiler.
Salah satu konsep terkenalnya adalah mengubah kode JavaScript modern menjadi kode yang lebih kompatibel.
Misalnya kita menulis:
const add = (a, b) => a + b;
Tool dapat mengubahnya menjadi bentuk yang lebih lama seperti:
var add = function(a, b) {
return a + b;
};
Salah satu tool yang terkenal dalam ekosistem ini adalah Babel.
Tetapi untuk sekarang kamu tidak perlu mendalami Babel.
Cukup pahami konsepnya:
JavaScript modern
↓
transpiler
↓
JavaScript yang lebih kompatibel
29. Hubungkan dengan materi yang sudah kamu pelajari
Ini yang menarik.
Kamu sudah belajar:
let dan const
let age = 20;
const name = "John";
➡️ diperkenalkan di ES6/ES2015.
Template literal
let message = `Hello ${name}`;
➡️ ES6/ES2015.
Array
let users = ["John", "Mark", "Mary"];
➡️ konsep array sudah ada sejak awal JavaScript.
while
while (condition) {
// ...
}
➡️ konsep dasar yang sudah ada sejak versi awal.
do...while
do {
// ...
} while (condition);
➡️ ES3.
switch
switch (value) {
case 1:
break;
}
➡️ ES3.
Function
function greetings() {
console.log("Hello");
}
➡️ konsep dasar JavaScript sejak awal.
Jadi course ini memang sengaja mengajarkan:
JavaScript lama
↓
JavaScript modern
supaya kamu memahami asal-usul fitur yang digunakan sekarang.
30. Kenapa course mengajarkan ES5 juga?
Karena ES5 merupakan bagian penting dari evolusi JavaScript.
Misalnya kamu menemukan kode lama:
var name = "John";
users.forEach(function(user) {
console.log(user);
});
Kamu harus bisa memahami kode tersebut.
Kemudian kamu mungkin melihat kode modern:
const name = "John";
users.forEach(user => {
console.log(user);
});
Kalau hanya belajar JavaScript modern tanpa memahami sejarahnya, kamu mungkin bertanya:
“Kenapa ada
var?”
“Kenapa function ditulis seperti itu?”
Dengan memahami ES5 → ES2015 → versi setelahnya, kamu bisa membaca kode JavaScript dari berbagai generasi.
31. Timeline yang wajib kamu pahami
Kalau ingin mengingat lecture ini, saya sarankan fokus pada timeline berikut:
1995
│
├── JavaScript dibuat
│
│
1997
│
├── ES1
│
│
1998
│
├── ES2
│
│
1999
│
├── ES3
│
│
├── ES4 → tidak pernah dirilis
│
│
2009
│
├── ES5
│
│
2015
│
├── ES6 / ES2015
│ ├── let / const
│ ├── arrow function
│ ├── template literal
│ ├── class
│ ├── destructuring
│ ├── modules
│ └── promises
│
│
2016
├── ES2016
│
2017
├── ES2017
│
2018
├── ES2018
│
...
│
2023
└── ES2023
Catatan: lecture yang kamu kirim menyebut ES2023 sebagai versi terbaru pada saat course tersebut dibuat. Karena standar ECMAScript terus berkembang setiap tahun, jangan menganggap ES2023 adalah versi terbaru secara permanen.
32. Hubungan semuanya dalam satu gambar mental
Coba simpan struktur ini di kepala:
ECMAScript
│
standar bahasa
│
┌─────────────┴─────────────┐
│ │
ES5 ES2015
│ │
fitur lama fitur modern
│ │
"use strict" let / const
array methods arrow function
template literals
class
modules
promises
│
▼
ES2016, ES2017,
ES2018, ES2019...
Sedangkan:
JavaScript
↓
bahasa pemrograman
↓
mengimplementasikan
↓
ECMAScript
33. Satu hal yang agak membingungkan: ECMAScript bukan hanya JavaScript
Lecture juga menyebut bahwa ada bahasa lain yang mengimplementasikan ECMAScript specification.
Jadi konsepnya kurang lebih:
ECMAScript Specification
│
┌────────────┼────────────┐
↓ ↓ ↓
JavaScript ActionScript ...
Artinya ECMAScript adalah standar, bukan sekadar nama lain untuk JavaScript.
Namun dalam kehidupan sehari-hari, ketika developer mengatakan:
“ES2020 punya fitur X”
biasanya mereka sedang membicarakan fitur bahasa JavaScript yang mengikuti standar ECMAScript tersebut.
34. Apakah JavaScript sekarang hanya berjalan di browser?
Nah, ini bagian yang perlu diperbarui dari konteks sejarah lecture.
Di awal sejarahnya:
JavaScript
↓
browser
Tetapi sekarang JavaScript tidak hanya berjalan di browser.
Ada runtime seperti:
Node.js
Deno
Bun
yang memungkinkan JavaScript dijalankan di luar browser.
Contohnya dengan Node.js kita bisa menjalankan:
console.log("Hello World");
langsung dari terminal.
Jadi gambaran modernnya:
JavaScript
│
┌──────────┴──────────┐
↓ ↓
Browser Runtime lain
│ │
Chrome Node.js
Firefox Deno
Safari Bun
│
↓
Web application
Ini merupakan perkembangan JavaScript setelah sejarah awal yang dibahas lecture.
35. Jadi apa yang sebenarnya harus kamu ingat?
Tidak perlu menghafalkan semua tahun secara mati-matian.
Untuk level kamu sekarang, fokus pada 7 hal berikut:
1. JavaScript adalah bahasa pemrograman
JavaScript = programming language
2. ECMAScript adalah standar/spesifikasi
ECMAScript = specification/standard
3. ES berarti ECMAScript
ES5 = ECMAScript 5
ES6 = ECMAScript 6
4. ES6 sama dengan ES2015
ES6 === ES2015
5. ES2015 adalah update besar
Fitur penting:
let
const
arrow function
template literal
class
destructuring
modules
promises
6. Setelah ES2015, rilis dilakukan setiap tahun
ES2016
ES2017
ES2018
ES2019
...
7. Tidak semua fitur JavaScript didukung browser lama
Jadi:
JavaScript modern
↓
cek browser support
↓
mungkin perlu transpilation/polyfill
🧠 Cheat Sheet Lecture
JavaScript
= nama bahasa pemrograman
ECMAScript
= standar/spesifikasi yang menjadi dasar JavaScript
ES
= singkatan dari ECMAScript
ES1
= 1997
ES2
= 1998
ES3
= 1999
= regex, try/catch, switch, do...while, dll.
ES4
= tidak pernah resmi dirilis
ES5
= 2009
= strict mode + banyak fitur baru
= dukungan browser sangat luas
ES6
= ES2015
= 2015
= update besar
= let, const, arrow function,
template literal, class,
destructuring, modules, promises, dll.
Setelah ES2015
= rilis tahunan
ES2016
ES2017
ES2018
...
Dan satu kalimat yang paling penting:
JavaScript adalah bahasanya, ECMAScript adalah standarnya, dan ES5/ES2015/ES2020/ES2023 adalah versi standar ECMAScript yang menjadi dasar fitur-fitur JavaScript.
Kalau kamu memahami hubungan JavaScript → ECMAScript → ES5 → ES6/ES2015 → versi tahunan, maka inti lecture ini sudah kamu kuasai.