Anonymous Function (Hàm vô danh)
Hàm không có tên, được gán cho biến. Gọi qua tên biến.
Cú pháp cơ bản
var func = function() {
alert('This is anonymous');
};
func(); // gọi hàm
Ví dụ trả về giá trị
var add = function(a, b) {
return a + b;
};
console.log(add(2, 3)); // 5
Named Function Expression (Có tên)
Tên hàm chỉ dùng bên trong (đệ quy, debug stack trace).
var factorial = function fact(n) {
return n <= 1 ? 1 : n * fact(n - 1); // dùng fact để đệ quy
};
console.log(factorial(5)); // 120
// fact() // ReferenceError – không truy cập được bên ngoài
Arrow Function (ES6) – Ngắn gọn hơn
const greet = (name) => "Hello " + name;
const sum = (a, b) => a + b;
const noArg = () => "No args";
Ứng dụng: Callback, Higher-order function
setTimeout(function() { console.log("Later"); }, 1000);
// hoặc
setTimeout(() => console.log("Later"), 1000);
[1,2,3].map(function(x) { return x * 2; });
// hoặc
[1,2,3].map(x => x * 2);
Lưu ý
- Function expression không được hoisting – phải khai báo trước khi dùng.
- Arrow function không có
this,arguments,super,new.targetriêng.