Fungsi dalam JavaScript
Artikel ini menjelaskan fungsi dalam JavaScript.
YouTube Video
Fungsi dalam JavaScript
Fungsi dalam JavaScript adalah blok kode yang dapat digunakan kembali untuk menjalankan tugas-tugas tertentu. Menggunakan fungsi meningkatkan keterbacaan kode dan mempermudah perawatan. Fungsi dapat didefinisikan dalam berbagai cara dan dimanipulasi secara fleksibel menggunakan argumen dan nilai kembali.
Cara Mendefinisikan Fungsi
Deklarasi Fungsi
Fungsi dapat didefinisikan menggunakan kata kunci function
. Deklarasi fungsi diangkat (hoisted) sebelum kode dijalankan, sehingga bisa dipanggil sebelum didefinisikan.
1console.log(greet("Everyone")); // Hello, Everyone
2
3function greet(name) {
4 return "Hello, " + name;
5}
6
7console.log(greet("Alice")); // Hello, Alice
Pada contoh ini, karena fungsi greet
dipanggil sebelum dideklarasikan, Hello, Everyone
dan Hello, Alice
akan ditampilkan.
Ekspresi Fungsi
Fungsi juga dapat didefinisikan dengan menetapkannya ke dalam variabel. Dalam hal ini, fungsi tidak diangkat (hoisted) dan hanya dapat dipanggil setelah didefinisikan.
1const greet = function(name) {
2 return "Hello, " + name;
3};
4
5console.log(greet("Bob")); // Hello, Bob
Pada contoh ini, Hello, Bob
akan ditampilkan.
Fungsi Panah (Arrow Function)
Fungsi panah adalah cara mendefinisikan fungsi dengan sintaks yang lebih singkat. Fungsi ini sangat berguna ketika menggunakan fungsi anonim (fungsi tanpa nama). Fungsi panah juga memiliki perilaku yang berbeda terkait kata kunci this
.
1const greet = (name) => {
2 return "Hello, " + name;
3};
4
5// When it can be expressed in a single line,
6// `return` and curly braces can be omitted
7const greetShort = name => "Hello, " + name;
8
9console.log(greet("Charlie")); // Hello, Charlie
10console.log(greetShort("Dave")); // Hello, Dave
Fungsi dapat dideklarasikan sebagai greet
dan greetShort
pada contoh ini. Jika fungsi hanya satu baris, Anda dapat menghilangkan {}
(kurung kurawal) seperti pada greetShort
.
Elemen dari Fungsi
Argumen
Nilai yang dilewatkan ke fungsi disebut argumen. Dengan menentukan argumen saat mendefinisikan fungsi, Anda dapat melewatkan nilai saat memanggil fungsi.
1function add(a, b) {
2 return a + b;
3}
4
5console.log(add(2, 3)); // 5
Argumen Bawaan
Anda dapat menentukan nilai bawaan jika tidak ada nilai yang diteruskan ke argumen.
1function greet(name = "Guest") {
2 return "Hello, " + name;
3}
4
5console.log(greet()); // Hello, Guest
6console.log(greet("Alice")); // Hello, Alice
Dalam contoh ini, jika greet()
dipanggil, nilai bawaan Guest
akan digunakan.
Nilai Kembalian
Anda dapat mengembalikan nilai kembalian dari sebuah fungsi menggunakan pernyataan return
. Jika tidak ada pernyataan return
, fungsi akan mengembalikan undefined
.
1function greet(name) {
2 console.log('Hello, ' + name + '!');
3}
4function square(num) {
5 return num * num;
6}
7
8console.log(square(4)); // 16
9console.log(greet('Alice')); // undefined
Dalam contoh ini, karena greet
tidak mengembalikan nilai, nilai kembaliannya adalah undefined
.
Fungsi Anonim
Fungsi tanpa nama disebut sebagai fungsi anonim. Fungsi ini sering digunakan sebagai ekspresi fungsi atau fungsi panah.
1const double = function(num) {
2 return num * 2;
3};
4
5console.log(double(5)); // 10
Ekspresi Fungsi yang Langsung Dipanggil (IIFE)
Ekspresi Fungsi yang Langsung Dipanggil (IIFE) adalah fungsi yang dieksekusi segera setelah didefinisikan. Fungsi ini biasanya digunakan untuk mengontrol lingkup (scope).
1/* Example of IIFE: Immediately Invoked Function Expression */
2(function() {
3 console.log("This is an IIFE");
4})(); // This is an IIFE
Fungsi ini akan dieksekusi segera setelah dideklarasikan.
Fungsi Callback
Memberikan fungsi sebagai argumen untuk fungsi lain, untuk dieksekusi kemudian, disebut sebagai fungsi callback. Fungsi ini sering digunakan dalam pemrosesan asinkron dan penanganan event.
1function processData(callback) {
2 let data = "Processed Data";
3 callback(data);
4}
5
6processData(function(result) {
7 console.log(result); // Processed Data
8});
Dalam contoh ini, sebuah fungsi yang mencetak nilai ke konsol diberikan sebagai fungsi callback.
Fungsi Rekursif
Memanggil fungsi itu sendiri disebut rekursi, dan fungsi yang melakukan pemrosesan berulang dengan cara ini disebut fungsi rekursif. Sebagai contoh, sebuah fungsi untuk menghitung faktorial dapat diimplementasikan menggunakan rekursi seperti berikut.
1function factorial(n) {
2 if (n === 0) {
3 return 1;
4 } else {
5 return n * factorial(n - 1);
6 }
7}
8
9console.log(factorial(5));
10// Output : 120
11// (5 * 4 * 3 * 2 * 1 = 120)
Dalam contoh ini, faktorial dari 5
, yaitu 120
, akan ditampilkan.
Kata Kunci this
this
yang digunakan di dalam fungsi menunjukkan objek mana yang dirujuk oleh fungsi tersebut. Dalam fungsi biasa, ini merujuk pada objek pemanggil, tetapi dalam fungsi panah, this
mempertahankan lingkup (scope) di mana fungsi tersebut didefinisikan.
1const obj = {
2 name: "Alice",
3 greet: function() {
4 console.log(this.name); // Refers to "Alice"
5 }
6};
7
8obj.greet(); // Alice
9
10const obj2 = {
11 name: "Bob",
12 greet: () => {
13 // Arrow function refers to the outer scope (undefined here)
14 console.log(this.name);
15 }
16};
17
18obj2.greet(); // undefined
greet
dari variabel obj
dideklarasikan menggunakan kata kunci function
. Oleh karena itu, kata kunci this
mengacu pada objek dari variabel obj
. Di sisi lain, greet
dari variabel obj2
dideklarasikan menggunakan fungsi panah. Oleh karena itu, kata kunci this
mengacu pada objek dalam lingkup luar dan bernilai undefined
dalam contoh ini.
Lingkup Fungsi dan Penutupan (Closures)
Variabel yang didefinisikan di dalam fungsi tidak dapat diakses dari luar fungsi. Hal ini disebut sebagai lingkup fungsi. Ada juga fitur yang disebut closure yang mempertahankan lingkup saat fungsi didefinisikan.
1function outer() {
2 let outerVar = "I am outer!";
3
4 function inner() {
5 console.log(outerVar); // Can access outerVar
6 }
7
8 return inner;
9}
10
11const innerFunc = outer();
12innerFunc(); // I am outer!
Pada contoh ini, fungsi inner
dapat mengakses variabel outerVar
karena mempertahankan lingkup tempat ia didefinisikan.
Ringkasan
- Ada berbagai cara untuk mendefinisikan fungsi, termasuk deklarasi fungsi, ekspresi fungsi, dan fungsi panah.
- Fungsi dapat menerima argumen dan mengembalikan nilai.
- Ada penggunaan khusus seperti fungsi callback dan fungsi rekursif.
- Penggunaan
this
harus diperhatikan, karena fungsi panah dan fungsi biasa memiliki perilaku yang berbeda. - Closures dapat digunakan untuk mengakses variabel internal dari luar lingkup.
Fungsi adalah salah satu konsep penting dalam JavaScript, yang memanfaatkan strukturnya yang fleksibel.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.