Menu

Deklarasi Fungsi JavaScript: Sintaks, Hoisting, dan Return

Cara mendeklarasikan fungsi di JavaScript: kata kunci function, parameter, nilai kembalian, hoisting, dan kapan memakai deklarasi atau ekspresi.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Fungsi Adalah Blok Langkah yang Diberi Nama

Setiap kali kamu ingin memberi nama pada sepotong logika lalu memakainya ulang, kamu menulis fungsi. Cara tertua dan paling lugas di JavaScript adalah deklarasi fungsi: kata kunci function diikuti sebuah nama.

Membacanya dari kiri ke kanan:

  • function adalah kata kunci yang memulai sebuah deklarasi.
  • greet adalah nama fungsinya.
  • (name) adalah daftar parameter, yaitu input yang diterima fungsi.
  • Blok di dalam kurung kurawal adalah isi fungsinya.
  • greet("Ada") adalah pemanggilan. JavaScript menjalankan isi fungsi dengan name terikat ke "Ada".

Mendefinisikan fungsi tidak menjalankannya. Memanggilnya yang menjalankan.

Parameter dan Argumen

Kata parameter adalah nama di dalam definisi fungsi. Kata argumen adalah nilai yang diberikan saat kamu memanggilnya. Dalam obrolan sehari-hari keduanya dianggap sinonim; perbedaannya jadi penting saat kamu membaca pesan error.

Di sini base dan exponent adalah parameter. 2 dan 10 adalah argumen. JavaScript mengikatnya secara berurutan: argumen pertama ke parameter pertama, dan seterusnya.

Tidak seperti beberapa bahasa lain, JavaScript tidak akan protes kalau kamu memberikan jumlah argumen yang salah. Argumen yang tidak ada menjadi undefined; argumen berlebih diabaikan diam-diam. Fleksibel, tetapi sesekali menjebak. Kita akan melihat nilai default dan rest parameter di dokumentasi berikutnya.

return Mengirim Nilai Kembali

console.log menulis ke output. return menyerahkan sebuah nilai kembali ke pemanggil agar bisa dipakai:

Tanpa return, sebuah fungsi mengembalikan undefined:

return juga langsung keluar dari fungsi. Return lebih awal adalah cara standar untuk menangani kasus khusus sebelum logika utamanya:

Return lebih awal menjaga isi utama fungsi agar tidak berubah menjadi piramida if/else.

Hoisting: Kamu Bisa Memanggilnya Sebelum Mendefinisikannya

Ini sesuatu yang benar-benar mengejutkan orang yang datang dari bahasa lain. Deklarasi fungsi mengalami hoisting: JavaScript memindahkannya ke bagian atas scope-nya sebelum menjalankan kode apa pun. Artinya kamu bisa memanggil fungsi di baris yang lebih atas daripada tempat deklarasinya:

Kode itu berjalan lancar. Sebelum eksekusi, engine memindai scope-nya, mendaftarkan square sebagai fungsi, dan baru kemudian mulai menjalankan pernyataan dari atas ke bawah.

Ini perbedaan perilaku yang nyata antara deklarasi fungsi dan cara lain membuat fungsi (ekspresi fungsi, arrow function). Keduanya mengalami hoisting seperti variabel: namanya sudah dikenal, tetapi nilainya baru diisi saat barisnya berjalan. Perbedaan itu dibahas lebih lanjut berikut ini.

Kebanyakan panduan gaya tetap menyarankan untuk mendefinisikan fungsi sebelum memanggilnya. Hoisting adalah jaring pengaman, bukan gaya yang patut diandalkan.

Deklarasi vs Ekspresi

Deklarasi fungsi berdiri sendiri sebagai pernyataan. Ekspresi fungsi muncul di tempat yang mengharapkan sebuah nilai, paling sering di sisi kanan sebuah penugasan:

Keduanya menghasilkan fungsi yang bisa dipanggil. Perbedaannya:

  • Deklarasi mengalami hoisting secara utuh. Ekspresi mengikuti aturan hoisting variabel tempat ia disimpan (const dan let berada di temporal dead zone sampai barisnya berjalan).
  • Deklarasi wajib punya nama. Ekspresi boleh anonim, walaupun memberinya nama membantu stack trace.
  • Deklarasi tidak bisa muncul di sembarang tempat. Dalam strict mode, function foo() {} di dalam blok if berperilaku tidak konsisten di berbagai engine, jadi pakai ekspresi di sana.

Untuk kebanyakan helper tingkat atas dalam sebuah file, deklarasi enak dibaca. Untuk fungsi yang diberikan sebagai argumen atau disimpan ke property, ekspresi (atau arrow function) adalah pilihan yang biasa.

Penamaan dan Gaya

Nama fungsi adalah janji tentang apa yang dilakukan fungsi itu. Menghabiskan beberapa karakter tambahan untuk memilih nama yang deskriptif akan terbayar begitu ada orang yang membaca kodenya.

Beberapa konvensi yang layak kamu pakai:

  • Nama fungsi sebaiknya kata kerja: fetchProfile, computeTotal, sendEmail.
  • Pakai camelCase, itulah norma di JavaScript.
  • Fungsi yang mengembalikan boolean sering diawali is, has, atau can: isValid, hasAccess, canEdit.

Tujuannya agar tempat pemanggilan terbaca seperti sebuah kalimat.

Contoh Kecil yang Berfungsi

Menggabungkan semua bagiannya: parameter, return lebih awal, dan nama yang deskriptif:

Satu deklarasi, satu guard clause, satu return yang jelas. Bentuk itu mencakup sebagian besar fungsi yang akan kamu tulis.

Berikutnya: Arrow Function

Deklarasi adalah andalan sehari-hari, tetapi JavaScript modern sangat bergantung pada sintaks yang lebih singkat, yaitu arrow function, terutama untuk callback dan kode satu baris. Bentuknya berbeda, perilakunya terhadap this juga berbeda, dan itulah topik halaman berikutnya.

Pertanyaan yang sering diajukan

Bagaimana cara mendeklarasikan fungsi di JavaScript?

Pakai kata kunci function, diikuti nama, kurung untuk parameter, dan sebuah blok. Contoh: function greet(name) { return 'Hi, ' + name; }. Kamu memanggilnya dengan menulis namanya disertai kurung: greet('Ada').

Apa itu function hoisting di JavaScript?

Deklarasi fungsi dipindahkan ke bagian atas scope yang melingkupinya sebelum kode berjalan, jadi kamu bisa memanggilnya di baris yang lebih atas daripada tempat ia ditulis. Ini hanya berlaku untuk deklarasi function. Ekspresi fungsi dan arrow function yang disimpan ke let atau const tidak mengalami hoisting dengan cara yang sama.

Apa bedanya deklarasi fungsi dan ekspresi fungsi?

Deklarasi berdiri sendiri sebagai pernyataan (function greet() {}) dan mengalami hoisting. Ekspresi menyimpan fungsi ke sebuah variabel (const greet = function() {}) dan mengikuti aturan hoisting variabel biasa. Deklarasi pasti punya nama; ekspresi sering kali anonim.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai