Introduction
Di JavaScript, regular function (fungsi biasa) dan arrow function adalah dua cara yang paling umum digunakan untuk mendefinisikan fungsi. Meskipun keduanya memiliki tujuan yang sama, yaitu untuk mengeksekusi sebuah blok kode, terdapat perbedaan signifikan antara keduanya. Artikel ini akan membahas perbedaan utama antara regular function dan arrow function serta kapan sebaiknya menggunakan masing-masing jenis fungsi tersebut.
1. Sintaksis: Perbedaan Antara Regular Function dan Arrow Function
Regular Function:
Regular function atau fungsi biasa memiliki sintaks tradisional yang kita gunakan di JavaScript.
Arrow Function:
Arrow function diperkenalkan di ES6 dan memiliki sintaks yang lebih ringkas. Berikut adalah contoh penulisan arrow function:
Perbedaan Sintaksis:
- Regular function menggunakan kata kunci
function
di awal. - Arrow function menggunakan tanda panah
=>
setelah parameter.
2. Perbedaan Dalam Penanganan this
Salah satu perbedaan paling penting antara regular function dan arrow function adalah cara keduanya menangani konteks this
.
Regular Function:
Pada fungsi biasa, this
merujuk ke objek yang memanggil fungsi tersebut, yang dapat bervariasi tergantung pada bagaimana fungsi tersebut dipanggil.
Namun, jika kita memanggil fungsi biasa dalam konteks global atau dalam fungsi lainnya, this
dapat berubah.
Arrow Function:
Arrow function tidak memiliki this
-nya sendiri. Sebaliknya, this
akan “dibawa” atau dipertahankan dari konteks di luar fungsi, yaitu dari tempat fungsi itu didefinisikan (lexical scoping).
Karena this
pada arrow function merujuk pada konteks di luar fungsi (bukan objek yang memanggilnya), di sini this.name
menjadi undefined
.
3. Penggunaan dengan Fungsi Callback
Arrow function sangat berguna dalam situasi di mana Anda ingin menggunakan this
yang terikat dengan konteks tempat fungsi tersebut didefinisikan, terutama dalam callback functions.
Contoh dengan Regular Function (masalah this
):
Contoh dengan Arrow Function (memperbaiki masalah this
):
Dengan menggunakan arrow function, this
tetap merujuk pada objek Timer, bukan pada objek global.
4. Kapan Menggunakan Regular Function dan Arrow Function?
- Gunakan Regular Function ketika Anda membutuhkan
this
untuk merujuk pada objek yang memanggil fungsi tersebut, seperti dalam metode objek. - Gunakan Arrow Function ketika Anda ingin
this
terikat ke konteks luar (lexical scoping) dan ketika fungsi Anda bersifat singkat dan tidak perlu mendefinisikan objekthis
baru. Arrow function sangat berguna dalam callback atau fungsi asinkron.
Kelebihan Arrow Function:
- Sintaks lebih singkat dan jelas, cocok untuk fungsi satu baris.
- Tidak mengikat
this
sendiri, sehingga berguna dalam callback yang membutuhkan akses ke konteks luar.
Kelebihan Regular Function:
this
berfungsi secara dinamis sesuai dengan konteks pemanggilan, sehingga lebih fleksibel dalam pengaturan objek atau kelas.
5. Contoh Kode Lain yang Menunjukkan Perbedaan
Regular Function dalam Constructor Function (misalnya dalam kelas):
Arrow Function dalam Kelas (Kelemahan terkait this
):
Pada kode kedua, meskipun menggunakan arrow function, this
tetap merujuk pada objek Person, sehingga arrow function juga bekerja dengan baik dalam konteks kelas.
6. Kesimpulan
Secara keseluruhan, baik regular function maupun arrow function memiliki kegunaan dan aplikasi yang berbeda di JavaScript:
- Regular function sangat berguna ketika Anda membutuhkan fleksibilitas dalam konteks
this
, seperti saat menggunakan fungsi dalam objek atau kelas. - Arrow function lebih ringkas dan efisien, serta sangat berguna dalam situasi di mana Anda ingin mempertahankan
this
dari konteks luar, seperti dalam callback functions dan fungsi asinkron.
Dengan memahami perbedaan ini, Anda dapat memilih jenis fungsi yang paling sesuai untuk situasi Anda, meningkatkan efisiensi dan keterbacaan kode JavaScript Anda.