Belajar Dasar JavaScript: Fungsi

Fungsi sangat berguna untuk mengelompokkan kode agar mudah di baca dan juga agar bisa dengan mudah digunakan kembali. Fungsi merupakan kumpulan kode yang dapat dijalankan, dapat membutuhkan input dan dapat mengeluarkan nilai.

Deklarasi Fungsi

Dalam JavaScript, fungsi dideklarasikan dengan keyword function. Berikut adalah contohnya:

function sayHello() {
  console.log("Hello!");
}

Pada kode di atas, kita mendeklarasikan fungsi bernama sayHello. Pada saat fungsi tersebut dipanggil, maka blok kode (kode di dalam kurung kurawal/{}) akan di jalankan. Untuk memanggil fungsi tersebut kita tinggal menggunakan namanya:

sayHello();

Keluarannya adalah:

Hello!

Parameter

Fungsi kadang membutuhkan input. Parameter adalah variabel yang diberikan ke sebuah fungsi sebagai input. Parameter hanya bisa diakses di dalam fungsi yang bersangkutan. Argumen merupakan nilai sebuah parameter yang diberikan saat memanggil fungsi.

Parameter dapat dideklarasikan seperti berikut:

function sayName(name) {
  console.log(`My name is ${name}`);
}

sayName("Marno");
// My name is Marno
sayName("Gito");
// My name is Gito

Fungsi sayName memiliki parameter bernama name. "Marno" dan "Gito" merupakan argument dari parameter name.

Fungsi dapat memiliki lebih dari 1 parameter. Parameter harus dipisah dengan koma (,). Contohnya adalah:

function greet(name, time) {
  console.log(`Good ${time}! ${name}`);
}

greet("Agus", "Morning");
// Good Morning! Agus
greet("Andri", "Noon");
// Good Noon! Andri

Fungsi greet mempunyai dua parameter yaitu name dan time. "Morning" dan "Noon" merupakan argument dari parameter name, karena sama-sama berada pada urutan 1. "Agus" dan "Andri" merupakan argument dari parameter time, karena sama-sama berada pada urutan 2. Jadi, argumen dan parameter dipasangkan sesuai urutan.

Default Parameter

Pada JavaScript, jika argumen untuk sebuah parameter tidak ditentukan maka nilainya undefined. Contohnya:

greet("Agus");
// Good undefined! Agus
greet();
// Good undefined! undefined

Untuk menghindari nilai dari parameter menjadi undefined maka kita bisa menggunakan default parameter. Default parameter adalah nilai yang diberikan ke parameter jika nilainya/argumennya tidak ditentukan.

function greet(name = "Toto", time = "Morning") {
  console.log(`Good ${time}! ${name}`);
}

greet("Agus", "Noon");
// Good Noon! Agus
greet("Agus");
// Good Morning! Agus
greet();
// Good Morning! Toto

Saat argument untuk parameter time tidak ditentukan maka "Morning" digunakan sebagai nilai parameter. Saat argument untuk parameter name tidak ditentukan maka "Toto" sebagai nilai parameter.

Keluaran Fungsi

Fungsi juga dapat menghasilkan sebuah nilai keluaran (output). Untuk menghasilkan nilai kita bisa menggunakan keyword return. Contohnya:

function square(x) {
  return x * x;
}

console.log(square(4)); // 16

Fungsi square akan menghasilkan nilai x * x.

Jika suatu fungsi tidak menentukan nilai keluarannya, maka keluarannya adalah undefined.

function sayName(name) {
  console.log(`My name is ${name}`);
}

console.log(sayName("Yusri"));
// My name is Yusri
// undefined

Fungsi sayName tidak menentukan keluarannya jadi keluarannya adalah undefined.

return akan meloncati semua kode setelahnya. return juga bisa digunakan tanpa nilai dan akan menghasilkan nilai undefined. Contohnya:

function sayName(name) {
  if (!name) {
    console.log("Name is empty");
    return;
  }
  console.log(`My name is ${name}`);
}

sayName();
// Name is empty
sayName("Wagiman");
// My name is Wagiman

Maksud dari !name adalah nilai dari name tidak truthy (falsy). Saat name = undefined, return di jalankan, sehingga console.log(`My name is ${name}`); diloncati.

Menyimpan Fungsi di Variabel

Kita bisa menyimpan fungsi ke variabel. Pemanggilan dan deklarasi sama dengan fungsi biasa. Yang berbeda adalah nama fungsi bisa dihilangkan. Contohnya:

const plus = function (a, b) {
  return a + b;
};
console.log(plus(10, 20)); // 30

Fungsi Bersarang

Dalam JavaScript, kita bisa mendeklarasikan fungsi di dalam fungsi. Fungsi yang berada di dalam fungsi lain dinamakan fungsi bersarang. Fungsi jenis ini dapat mengakses dan mengubah variabel fungsi luar. Contohnya:

function distribute(a, b, factor) {
  function times(x) {
    return x * factor;
  }

  return times(a) + times(b);
}
console.log(distribute(2, 3, 10)); // 50

Fungsi times hanya bisa dipanggil di dalam fungsi distribute. Fungsi times juga bisa mengakses parameter dari fungsi distribute.