JavaScript (JS) telah berevolusi secara dramatis sejak awal keberadaannya. Dahulu, penulisan JS seringkali identik dengan manipulasi DOM yang berantakan dan penggunaan variabel global yang tidak terkontrol. Namun, dengan hadirnya standar ECMAScript (ES) baru, praktik terbaik dalam penulisan kode telah berubah total. Menguasai penulisan JavaScript modern bukan hanya tentang mengetahui sintaks, tetapi juga tentang membangun kode yang efisien, mudah dipelihara, dan dapat diskalakan.
Salah satu perubahan fundamental adalah penggantian penggunaan var dengan let dan const. Praktik ini sangat penting untuk menghindari isu hoisting yang seringkali membingungkan pada var, serta memastikan cakupan variabel yang lebih terkontrol (scoping).
const: Gunakan ini sebagai default. Variabel yang dideklarasikan dengan const tidak dapat diubah nilainya setelah inisialisasi. Ini meningkatkan kejelasan maksud kode.let: Gunakan hanya ketika Anda benar-benar tahu bahwa nilai variabel tersebut perlu diubah di kemudian hari (misalnya dalam sebuah loop iterasi).// Contoh yang baik
const NAMA_APLIKASI = "Pengelola Data";
let hitungan = 0;
if (true) {
let pesan = "Halo";
// pesan hanya ada di dalam blok ini
}
Fungsi panah (=>) menawarkan sintaks yang lebih ringkas dibandingkan fungsi tradisional. Selain itu, mereka menyelesaikan masalah umum terkait konteks this. Dalam fungsi panah, this diwarisi dari lingkup luar (lexical this), yang sangat berguna saat bekerja dengan metode kelas atau callback asinkron.
Penulisan yang ringkas memungkinkan Anda menulis fungsi satu baris tanpa perlu menggunakan kata kunci return eksplisit:
// Fungsi tradisional
const tambahTradisional = function(a, b) {
return a + b;
};
// Fungsi Panah yang ringkas (Implisit Return)
const tambahPanah = (a, b) => a + b;
Operasi yang memakan waktu (seperti mengambil data dari API) harus ditangani secara asinkron agar tidak memblokir eksekusi program. Meskipun menggunakan Promise dengan .then() dan .catch() adalah kemajuan besar, sintaks async/await (diperkenalkan di ES2017) membuat kode asinkron terlihat hampir sama dengan kode sinkron, sehingga jauh lebih mudah dibaca dan di-debug.
Untuk menggunakannya, Anda cukup mendeklarasikan fungsi sebagai async, dan Anda dapat menggunakan kata kunci await di depannya sebelum pemanggilan Promise.
async function ambilDataPengguna(id) {
try {
const response = await fetch(`/api/users/${id}`);
if (!response.ok) {
throw new Error('Gagal mengambil data');
}
const data = await response.json();
return data;
} catch (error) {
console.error("Terjadi kesalahan:", error.message);
return null;
}
}
Untuk proyek skala menengah hingga besar, memecah kode menjadi modul-modul terpisah adalah keharusan. JavaScript modern menggunakan sintaks import dan export (ES Modules) untuk mengelola dependensi antar file. Ini memastikan bahwa hanya fungsi atau variabel yang memang ingin diekspos yang dapat diakses oleh file lain, menjaga integritas kode.
Di file yang berisi fungsi yang ingin dibagikan (misalnya, utils.js):
export const hitungLuas = (p, l) => p * l;
export const sapa = (nama) => `Halo, ${nama}`;
Di file yang menggunakannya (misalnya, main.js):
import { hitungLuas, sapa } from './utils.js';
console.log(sapa("Dunia"));
console.log(hitungLuas(10, 5));
Penulisan JavaScript yang baik juga mengandalkan fitur-fitur sintaksis yang membuat operasi umum menjadi lebih ringkas:
`) untuk interpolasi string yang lebih bersih daripada konkatenasi manual....): Berguna untuk menyalin array/objek atau menggabungkan koleksi tanpa mutasi.Sebagai contoh, Template Literals sangat meningkatkan keterbacaan string yang kompleks:
const user = { nama: "Budi", umur: 25 };
// Tanpa template literal:
const pesanLama = "Pengguna bernama " + user.nama + " berumur " + user.umur + " tahun.";
// Dengan template literal:
const pesanBaru = `Pengguna bernama ${user.nama} berumur ${user.umur} tahun.`;
Dengan mengadopsi prinsip-prinsip penulisan JavaScript modern ini—mulai dari manajemen variabel yang ketat hingga penanganan asinkronisitas yang elegan—pengembang dapat menghasilkan kode yang tidak hanya berfungsi tetapi juga tangguh dan menyenangkan untuk dikerjakan oleh tim di masa mendatang.