Pub:

Perbedaan utama antara function expression dan function declaration, yaitu pada function expression nama fungsi dapat dihilangkan dan disebut sebagai anonymous functions.

Function Declarations

Function yang dibuat dengan function declaration adalah function object dan memiliki semua properti, metode, dan perilaku dari function objects. Buka link ini untuk informasi lebih jelas tentang function. Berikut adalah contoh function declaration:

function lebarKaliPanjang(lebar, panjang) {
  return lebar * panjang;
}

console.log(lebarKaliPanjang(2, 7));
// logs 14

Function Expression

Function expression sangat mirip dan memiliki syntax yang hampir sama dengan function declaration. Function expression dapat digunakan sebagai IIFE (Immediately Invoked Function Expression) yang dapat berjalan segera setelah didefinisikan. Berikut adalah contoh function expression:

const lebarKaliPanjang = function (lebar, panjang) {
  return lebar * panjang;
}

console.log(lebarKaliPanjang(2, 7));
// logs 14

Contoh dengan penggunaan arrow function:

const lebarKaliPanjang = (lebar, panjang) => {
  return lebar * panjang;
}

console.log(lebarKaliPanjang(2, 7));
// logs 14

Hoisting

Hoisting adalah mekanisme JavaScript dimana variabel dan function declaration dipindahkan ke atas script. Akan tetapi hoisting tidak berlaku untuk function expression. Untuk variable, hoisting hanya berlaku pada variable yang dibuat dengan var, tapi tidak berlaku pada variable dengan cakupan block seperti let dan const.

Seperti diuraikan di atas bahwa hoisting berlaku pada function declaration, contoh sebagai berikut:

wkwk(); // logs "berhasil!"

function wkwk() {
  console.log('berhasil!');
}

Hoisting tidak berlaku pada function expression, contoh sebagai berikut:

gakTau(); // logs Error: gakTau is not a function

var gakTau = function () {
  console.log('apapun');
};

Variable Hoisting

Contoh hoisting pada variable:

var namaSaya; // declaration
namaSaya = 'Aho';
console.log(namaSaya); // logs Aho

Contoh berikut akan manghasilkan output yang sama dengan contoh di atas:

namaSaya = 'Aho';
var namaSaya;
console.log(namaSaya); // logs Aho

Contoh hoisting tidak berlaku pada variable dengan keyword let dan const:

namaSaya = 'Aho';
let namaSaya;

console.log(namaSaya); // logs Error: Cannot access 'namaSaya' before initialization

namaAnda = 'Aho';
const namaAnda;
console.log(namaAnda); // logs Error: Missing initializer in const declaration

Credit

Credit Image

Image by Joan Gamellfrom Unsplash

Loading comments...