Anonymous function = function expression **không có tên** (name không dùng trong call stack).
Ví dụ
var myFunction = function() {
// function body
};
myFunction(); // gọi qua variable
Đặc điểm
- Gán vào variable / truyền làm argument (callback).
- Có thể nhận parameter, return value như function bình thường.
- Không thể tự gọi đệ quy (recursive) trừ khi dùng
arguments.callee(deprecated) hoặc gán tên cho expression:const fn = function named() { named(); }.
Named Function Expression (có tên nhưng vẫn expression)
var factorial = function fact(n) {
return n <= 1 ? 1 : n * fact(n-1); // đệ quy dùng tên nội bộ
};
Lợi ích named expression: Debug stack trace hiện tên hàm thay vì anonymous.