Pada bahasa pemrograman javascript terdapat 2 jenis function, yaitu function Declaration dan Function Expression.

Function declaration itu ya.. function biasa.. yang memuat code block didalamnya berisi statement – statement. Statement adalah intruksi pemrograman. Pengertian panjangnya kurang lebih kayak gini.. suatu Intruksi individu yang ditulis di sebuah program untuk menginstruksi jalan proses sebuah program, atau dengan arti lain berfungsi untuk memerintahkan bagaimana program akan berjalan .

Contoh statement:

  1. if
  2. if-else
  3. while
  4. do-while
  5. for
  6. switch
  7. for-in
  8. with (deprecated)
  9. debugger
  10. variable declaration

Code block dijavascript itu ya blok kode hehe yang ditandai dengan curly bracket {}. Tujuan Code Block untuk mengelompokkan beberapa perintah sehingga lebih dimengerti.

Kelebihan Function Declaration:

Dapat digunakan berulang kali: Tetapkan kode satu kali, dan gunakan berkali-kali. Kamu dapat menggunakan kode yang sama berkali-kali dengan argumen yang berbeda, untuk menghasilkan hasil yang berbeda.

Contoh Function Declaration:

function toCelsius(f) {
  return (5/9) * (f-32);
}
document.getElementById("demo").innerHTML = toCelsius(77); // output = 25

Function Expression adalah function yang disimpan sebagai variable.

Contoh Function Expression seperti dibawah ini:

const toCelsius = function(f){
  return (5/9) * (f-32);
};

document.getElementById("demo").innerHTML = toCelsius(77); // output 25

atau bisa ditulis seperti ini:

const toCelsius = (f) => {
  return (5/9) * (f-32);
};
document.getElementById("demo").innerHTML = toCelsius(77) // output 25

Yang perlu diingat pada function expression:

  • Function expression sebenarnya adalah anonymous function (fungsi tanpa nama). Fungsi yang disimpan dalam variabel tidak perlu nama fungsi. Mereka selalu dipanggil menggunakan nama variabel.
  • Function expressions bukanlah code block, ia berupa variable. Maka sebaiknya diakhiri semicolon ( ; ) untuk menegaskan ia adalah variable.
  • Function expression tidak bersifat hoisting. Artinya , kamu harus membuat function nya terlebih dahulu baru menggunakan dibawahnya.
  • Jika function declaration dibuat didalam code block . Function dapat digunakan dimanapun, asalkan masih didalam code block / didalam curly bracket. Tapi tidak dapat dipanggil diluar itu.
let age = prompt("What is your age?", 18);

// conditionally declare a function
if (age < 18) {

  function welcome() {
    alert("Hello!");
  }

} else {

  function welcome() {
    alert("Greetings!");
  }

}

// ...use it later
welcome(); // Error: welcome is not defined

Kode diatas menghasilkan not defined. Jika menggunakan Function Expression:

let age = prompt("What is your age?", 18);

let welcome;

if (age < 18) {

  welcome = function() {
    alert("Hello!");
  };

} else {

  welcome = function() {
    alert("Greetings!");
  };

}

welcome(); // ok now

Kamu bisa menggunakan let.

Kamu bisa menggunakan ternary operator untuk penulisan lebih singkat:

let age = prompt("What is your age?", 18);

let welcome = (age < 18) ?
  function() { alert("Hello!"); } :
  function() { alert("Greetings!"); };

welcome(); // ok now

Sumber :
https://javascript.info/function-expressions
https://www.w3schools.com/js/js_functions.asp