sambil didenger lagunya, enakeun

Hoisting

Fungsi juga ada hoistingnya bro. Kayak variabel. Cuman Function Expression aja yang gak ngedukung hoisting. Hoisting teh artinya “ngangkat” ya.

// Declaration
helloHenry(); // hello henry

function helloHenry(){
  console.log("hello henry");
}
// Arrow
helloHenry(); // hello henry

const helloHenry = () => {
  console.log("hello henry");
}
// Expression
helloHenry(); // TypeError: helloHenry is not a function

const helloHenry = function() {
  console.log("hello henry");
}

Scope

Pokoknya, pada function expression kan si fungsinya bisa tidak anonymous, bisa di namain, jadi bisa dipake di dalem fungsi. Nah, kalau dipake diluar fungsi, itu teh gak bisa.

const fucktorial = function fuck(n) {
  if (n === 0) return 1;
  return n * fuck(n - 1);
}

console.log(typeof fuck); // undefined
fuck(1) // ReferenceError: fuck is not defined

Udah, gitu aja. Harusnya sih di postingan kemaren. Tapi yaudahlahya…