Back to IF3110 Pengembangan Aplikasi Berbasis Web
Topic
Questions/Cues
Apa itu JavaScript?
Bagaimana JS dieksekusi?
Tipe data dasar di JS?
Perbedaan
==&===?Apa itu
var,let,const?Konsep Objects & Prototypes?
Bagaimana JS berinteraksi dengan HTML?
Apa itu DOM?
Apa itu Event Loop?
Mengapa perlu Asynchronous?
Apa itu Callback?
Apa itu Promise?
Apa itu
async/await?Reference Points
- Slides IF3110-04-JavaScript.pdf
Definisi dan Lingkungan Eksekusi JavaScript
JavaScript (JS) adalah bahasa pemrograman interpreter-based yang dinamis dan loosely-typed. Awalnya hanya berjalan di browser, kini JS bisa berjalan di server (Node.js) atau lingkungan lain. JS adalah bahasa di balik interaktivitas halaman web.
Cara Kerja (di Browser):
Kode JavaScript ditulis dalam file
.jsatau langsung di tag<script>dalam HTML.Ketika browser memuat halaman, JavaScript Engine (seperti Google V8 di Chrome atau SpiderMonkey di Firefox) akan mem-parsing dan mengeksekusi kode tersebut.
Engine ini mengubah kode JS menjadi bytecode dan kemudian menjadi kode mesin yang dioptimalkan untuk dijalankan.
Sintaks Dasar, Tipe Data, dan Variabel
Sintaks Dasar:
Mirip dengan C atau Java, case-sensitive.
Titik koma (
;) di akhir baris bersifat opsional.Komentar menggunakan
//(satu baris) atau/* */(banyak baris).Tipe Data Primitif:
Number: Semua angka adalah floating-point 64-bit (double). Termasuk nilai spesial seperti
InfinitydanNaN(Not a Number).String: Teks yang diapit oleh
"atau'. Bersifat immutable (tidak bisa diubah).Boolean:
trueataufalse. Nilai-nilai seperti0,"",null,undefined,NaNdianggap “falsy” (akan menjadifalsesaat dikonversi).null: Representasi nilai “kosong” atau “tidak ada”.
undefined: Variabel yang sudah dideklarasikan tapi belum diberi nilai.
Variabel:
var: Deklarasi variabel dengan lingkup fungsi (function scope). Bisa dideklarasi ulang. (Kurang disarankan di kode modern).
let: Deklarasi variabel dengan lingkup blok (block scope). Tidak bisa dideklarasi ulang di lingkup yang sama.
const: Sama sepertilettapi nilainya tidak bisa diubah setelah diinisialisasi (konstan).Operator dan Kontrol Alur
Operator Perbandingan Penting:
==(Loose Equality): Membandingkan nilai setelah melakukan konversi tipe data. Contoh:"5" == 5hasilnyatrue.
===(Strict Equality): Membandingkan nilai DAN tipe data, tanpa konversi. Contoh:"5" === 5hasilnyafalse. Praktik terbaik adalah selalu menggunakan===untuk menghindari bug tak terduga.Kontrol Alur:
Kondisional:
if...else,switch.Perulangan:
for(klasik,for...inuntuk properti objek,for...ofuntuk nilai array),while.Error Handling:
try...catch...throwuntuk menangani pengecualian (exceptions).Functions, Objects, dan Prototypes
Functions:
Adalah “first-class citizens”, artinya fungsi bisa diperlakukan seperti data: disimpan dalam variabel, dilewatkan sebagai argumen, dan dikembalikan dari fungsi lain.
Dapat didefinisikan dengan kata kunci
functionatau sebagai arrow function (=>).Objects:
Hampir semua hal di JavaScript adalah objek. Objek adalah kumpulan pasangan key-value (properti dan nilai).
Dibuat menggunakan object literal (
{}) atau dengan constructor function (new Date()).Prototypes & Inheritance:
JavaScript menggunakan prototypal inheritance. Setiap objek memiliki prototype (objek lain) yang menjadi “cetakan” atau sumber properti dan method warisan.
Sejak ES6, kata kunci
classdiperkenalkan sebagai “syntactic sugar” (penyederhanaan sintaks) di atas sistem prototype untuk membuatnya lebih mirip bahasa berbasis kelas tradisional.DOM, Events, dan Asynchronous
Document Object Model (DOM):
Adalah representasi struktur halaman HTML dalam bentuk objek. JavaScript menggunakan DOM untuk memanipulasi konten, struktur, dan gaya halaman secara dinamis.
Method umum:
document.getElementById(),document.querySelector(),document.createElement().Events:
JS bersifat event-driven. Skrip bereaksi terhadap aksi pengguna (event) seperti
click,mouseover,keydown.Event Listener (
.addEventListener()) digunakan untuk “mendengarkan” event pada sebuah elemen dan menjalankan fungsi (callback) saat event terjadi.Concurrency & Event Loop:
JavaScript pada dasarnya single-threaded. Untuk mencegah operasi yang lama (seperti request network) memblokir seluruh halaman, JS menggunakan model asynchronous dengan Event Loop.
Event Loop: Sebuah proses yang terus-menerus memeriksa message queue (antrian tugas). Jika call stack (tumpukan eksekusi) kosong, ia akan mengambil tugas dari antrian dan menjalankannya.
Mengelola Asynchronous: Callback, Promise, Async/Await
Callback: Sebuah fungsi yang dilewatkan sebagai argumen ke fungsi lain, untuk dieksekusi nanti setelah operasi selesai. Penggunaan callback yang berlebihan dapat menyebabkan “Callback Hell”/“Pyramid of Doom” (kode yang sulit dibaca).
Promise: Sebuah objek yang merepresentasikan hasil dari operasi asynchronous yang akan selesai di masa depan. Sebuah Promise memiliki tiga state: pending (menunggu), fulfilled (berhasil), atau rejected (gagal).
then()digunakan untuk menangani hasil sukses, dancatch()untuk menangani kegagalan. Ini membuat kode lebih rapi daripada callback.
async/await: Sintaks modern yang dibangun di atas Promise. Kata kunciasyncmembuat sebuah fungsi mengembalikan Promise. Kata kunciawaitdigunakan di dalam fungsiasyncuntuk menunggu sebuah Promise selesai, membuat kode asynchronous terlihat dan terasa seperti kode synchronous, sehingga jauh lebih mudah dibaca dan dikelola.
JavaScript adalah bahasa dinamis single-threaded yang menghidupkan web melalui manipulasi DOM dan penanganan event. Untuk menangani operasi yang memakan waktu tanpa memblokir antarmuka pengguna, JS menggunakan model asynchronous berbasis Event Loop. Pola modern untuk mengelola asynchronous telah berevolusi dari Callback menjadi Promise yang lebih terstruktur, dan disederhanakan lebih lanjut dengan sintaks
async/awaityang intuitif, memungkinkan penulisan kode non-blocking yang bersih dan mudah dibaca.
Additional Information
Pendalaman Teknis: Closures
Sebuah closure adalah kombinasi dari sebuah fungsi dan lingkungan leksikal (lingkup) di mana fungsi tersebut dideklarasikan. Artinya, sebuah fungsi “mengingat” variabel-variabel yang ada di lingkup luarnya, bahkan setelah lingkup luar tersebut selesai dieksekusi. Ini adalah konsep kuat yang memungkinkan pembuatan private variables dan stateful functions.
Eksplorasi Mandiri: TypeScript
TypeScript adalah superset dari JavaScript yang dikembangkan oleh Microsoft. Ia menambahkan fitur static typing opsional ke dalam bahasa. Dengan mendefinisikan tipe data untuk variabel dan parameter fungsi, TypeScript dapat menangkap banyak error pada saat compile-time (sebelum kode dijalankan), bukan saat runtime. Kode TypeScript pada akhirnya akan di-transpile menjadi JavaScript biasa agar dapat dijalankan oleh browser.
Sumber & Referensi Lanjutan:
MDN Web Docs - JavaScript: developer.mozilla.org/en-US/docs/Web/JavaScript
JavaScript.info: javascript.info - Penjelasan mendalam dari dasar hingga topik lanjutan.
Visualisasi Event Loop oleh Philip Roberts: latentflip.com/loupe - Alat interaktif untuk memahami cara kerja Event Loop.
