Deklarasi adalah pernyataan fungsi bernama; ekspresi menetapkan fungsi ke variabel. Perbedaan praktis adalah hoisting.
js
();
() { ; }
();
expressed = () { ; };
Deklarasi adalah pernyataan fungsi bernama; ekspresi menetapkan fungsi ke variabel. Perbedaan praktis adalah hoisting.
();
() { ; }
();
expressed = () { ; };
Deklarasi fungsi diangkat bersama tubuhnya, jadi seluruh fungsi ada sebelum eksekusi mencapainya. Ekspresi fungsi hanyalah nilai yang ditetapkan ke variabel — pada titik panggilan awal, expressed masih undefined (var) atau di TDZ (let/const).
// expression — for callbacks, conditional definitions, arrow functions
const handler = () => doThing();
const fn = condition ? a : b;
arr.map(x => x * 2);
// declaration — clear, hoisted top-level functions
function calculateTotal(items) { ... }
Deklarasi terbaca dengan baik untuk fungsi bernama tingkat atas dan memanfaatkan hoisting (Anda dapat mendefinisikannya setelah penggunaannya). Ekspresi diperlukan untuk fungsi panah, callback, IIFE, dan penetapan fungsi secara kondisional. Fungsi panah selalu ekspresi.