Declaration là một câu lệnh hàm có tên; expression gán một hàm cho một biến. Khác biệt thực tế là hoisting.
js
();
() { ; }
();
expressed = () { ; };
Declaration là một câu lệnh hàm có tên; expression gán một hàm cho một biến. Khác biệt thực tế là hoisting.
();
() { ; }
();
expressed = () { ; };
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộFunction declaration được hoist cùng với phần thân, nên cả hàm tồn tại trước khi quá trình thực thi chạm đến nó. Function expression chỉ là một giá trị được gán cho một biến — tại thời điểm gọi sớm, expressed vẫn là undefined (với var) hoặc nằm trong TDZ (với let/const).
// expression — cho callback, định nghĩa có điều kiện, arrow function
const handler = () => doThing();
const fn = condition ? a : b;
arr.map(x => x * 2);
// declaration — hàm cấp cao rõ ràng, được hoist
function calculateTotal(items) { ... }
Declaration dễ đọc cho các hàm có tên ở cấp cao và hưởng lợi từ hoisting (bạn có thể định nghĩa chúng sau khi dùng). Expression là cần thiết cho arrow function, callback, IIFE, và gán hàm có điều kiện. Arrow function luôn luôn là expression.