Fungsi dalam JavaScript
Artikel ini menerangkan fungsi dalam JavaScript.
YouTube Video
Fungsi dalam JavaScript
Fungsi dalam JavaScript adalah blok kod yang boleh digunakan semula untuk melaksanakan tugas tertentu. Penggunaan fungsi meningkatkan kebolehbacaan kod dan memudahkan penyelenggaraan. Fungsi boleh ditakrif dalam beberapa cara dan dimanipulasi secara fleksibel menggunakan argumen dan nilai pemulangan.
Cara untuk Menakrifkan Fungsi
Deklarasi Fungsi
Fungsi boleh ditakrifkan menggunakan kata kunci function
. Deklarasi fungsi akan dialih atas (hoisted) sebelum kod dijalankan, jadi ia boleh dipanggil sebelum ia ditakrifkan.
1console.log(greet("Everyone")); // Hello, Everyone
2
3function greet(name) {
4 return "Hello, " + name;
5}
6
7console.log(greet("Alice")); // Hello, Alice
Dalam contoh ini, kerana fungsi greet
dipanggil sebelum deklarasinya, Hello, Everyone
dan Hello, Alice
akan dipaparkan.
Ekspresi Fungsi
Fungsi juga boleh ditakrifkan dengan menetapkan fungsi tersebut kepada pembolehubah. Dalam kes ini, fungsi tidak akan dialih atas dan hanya boleh dipanggil selepas ia ditakrifkan.
1const greet = function(name) {
2 return "Hello, " + name;
3};
4
5console.log(greet("Bob")); // Hello, Bob
Dalam contoh ini, Hello, Bob
akan dipaparkan.
Fungsi Arrow
Fungsi arrow adalah satu cara untuk menakrifkan fungsi dengan sintaks yang lebih ringkas. Fungsi ini sangat berguna apabila menggunakan fungsi anonim (fungsi tanpa nama). Fungsi arrow juga mempunyai tingkah laku yang berbeza berkaitan dengan 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 boleh ditakrifkan sebagai greet
dan greetShort
dalam contoh ini. Jika fungsi dalam satu baris, anda boleh mengabaikan {}
(kurungan kerinting) seperti greetShort
.
Elemen dalam Fungsi
Argumen
Nilai yang dipindahkan ke fungsi disebut sebagai argumen. Dengan menentukan argumen semasa menakrifkan fungsi, anda boleh memindahkan nilai semasa memanggil fungsi.
1function add(a, b) {
2 return a + b;
3}
4
5console.log(add(2, 3)); // 5
Argumen Lalai
Anda boleh menentukan nilai lalai jika tiada nilai diberikan kepada 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 lalai Guest
akan digunakan.
Nilai Pulangan
Anda boleh mengembalikan nilai pulangan daripada fungsi menggunakan penyataan return
. Jika tiada penyataan 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, kerana greet
tidak mengembalikan nilai, nilai pulangan adalah undefined
.
Fungsi Tanpa Nama
Fungsi tanpa nama dipanggil sebagai fungsi tanpa nama. Ia 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 Terus Dipanggil (IIFE)
Ekspresi Fungsi yang Terus Dipanggil (IIFE) ialah fungsi yang dijalankan sebaik sahaja ia ditakrifkan. Ia biasanya digunakan untuk mengawal skop.
1/* Example of IIFE: Immediately Invoked Function Expression */
2(function() {
3 console.log("This is an IIFE");
4})(); // This is an IIFE
Ia dilaksanakan sebaik sahaja ia diisytiharkan.
Fungsi Callback
Memberikan fungsi sebagai argumen kepada fungsi lain, untuk dilaksanakan kemudian, dipanggil sebagai fungsi callback. Ia sering digunakan dalam pemprosesan tidak segerak dan pengendalian acara.
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, fungsi yang mengeluarkan nilai ke konsol diberikan sebagai fungsi callback.
Fungsi Rekursif
Memanggil fungsi itu sendiri dipanggil sebagai rekursi, dan fungsi yang melakukan pemprosesan berulang menggunakan ini dipanggil fungsi rekursif. Sebagai contoh, fungsi untuk mengira faktorial boleh dilaksanakan 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 bagi 5
, iaitu 120
, akan dipaparkan.
Kata Kunci this
this
yang digunakan di dalam fungsi menunjukkan objek mana yang dirujuk oleh fungsi. Dalam fungsi biasa, ia merujuk kepada objek pemanggil, tetapi dalam fungsi panah, ia mengekalkan this
daripada skop di mana ia ditakrifkan.
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
bagi pemboleh ubah obj
diisytiharkan menggunakan kata kunci function
. Oleh itu, kata kunci this
merujuk kepada objek bagi pemboleh ubah obj
. Sebaliknya, greet
bagi pemboleh ubah obj2
diisytiharkan menggunakan fungsi arrow. Oleh itu, kata kunci this
merujuk kepada objek dalam skop luar dan ia adalah undefined
dalam contoh ini.
Skop Fungsi dan Penutupan
Pemboleh ubah yang ditakrifkan dalam fungsi tidak dapat diakses dari luar fungsi. Ini dipanggil sebagai skop fungsi. Terdapat juga ciri yang dipanggil penutupan yang mengekalkan skop di titik apabila fungsi tersebut ditakrifkan.
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!
Dalam contoh ini, fungsi inner
boleh mengakses pemboleh ubah outerVar
kerana ia mengekalkan skop di mana fungsi tersebut ditakrifkan.
Ringkasan
- Terdapat pelbagai cara untuk mentakrifkan fungsi, termasuk deklarasi fungsi, ekspresi fungsi, dan fungsi arrow.
- Fungsi boleh menerima argumen dan mengembalikan nilai.
- Terdapat kegunaan khas seperti fungsi callback dan fungsi rekursif.
- Perhatian mesti diberikan dalam pengendalian
this
, kerana fungsi arrow dan fungsi biasa bertindak secara berbeza. - Penutupan boleh digunakan untuk mengakses pemboleh ubah dalaman dari luar skop.
Fungsi adalah salah satu konsep penting dalam JavaScript, memanfaatkan strukturnya yang fleksibel.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.