Hàm ẩn danh (Anonymous Function) trong JavaScript là hàm không có tên và thường được sử dụng trong một số tình huống nhất định. Dưới đây là một số trường hợp phổ biến mà bạn có thể sử dụng hàm ẩn danh:

1. Gọi hàm ngay lập tức (IIFE)

Hàm ẩn danh thường được sử dụng để tạo ra một hàm gọi ngay lập tức (Immediately Invoked Function Expression – IIFE). Điều này cho phép bạn tạo ra một phạm vi (scope) mới để bảo vệ các biến không bị lộ ra ngoài.

Ví dụ:

(function() {
    var privateVariable = 'This is private';
    console.log(privateVariable);
})();

2. Truyền tham số vào hàm

Hàm ẩn danh có thể được sử dụng để truyền tham số mà không cần phải định nghĩa một hàm có tên.

Ví dụ:

const sum = function(a, b) {
    return a + b;
};

console.log(sum(5, 10)); // In ra 15

3. Callback Functions

Hàm ẩn danh thường được sử dụng làm hàm gọi lại (callback) trong các phương thức như forEach, map, filter, và setTimeout. Điều này giúp bạn định nghĩa logic mà không cần phải tạo một hàm riêng biệt.

Ví dụ:

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(function(num) {
    console.log(num * 2);
});

4. Sự kiện (Event Handlers)

Khi bạn gán một hàm cho một sự kiện, bạn có thể sử dụng hàm ẩn danh để xác định hành động mà không cần phải định nghĩa một hàm riêng.

Ví dụ:

document.getElementById('myButton').addEventListener('click', function() {
    alert('Button was clicked!');
});

5. Định nghĩa hàm trong một biến

Bạn có thể gán hàm ẩn danh cho một biến để sử dụng sau này mà không cần phải tạo một hàm có tên.

Ví dụ:

const multiply = function(x, y) {
    return x * y;
};

console.log(multiply(3, 4)); // In ra 12

6. Đối số trong hàm

Hàm ẩn danh có thể được sử dụng như một đối số cho các hàm khác mà không cần phải định nghĩa một hàm có tên.

Ví dụ:

setTimeout(function() {
    console.log('This message is delayed');
}, 1000);

Kết luận

Hàm ẩn danh rất linh hoạt và được sử dụng phổ biến trong JavaScript, đặc biệt là trong các tình huống mà bạn muốn giảm thiểu việc định nghĩa hàm không cần thiết, hoặc khi bạn muốn bảo vệ phạm vi của các biến. Tuy nhiên, bạn nên cẩn thận khi sử dụng chúng vì việc sử dụng quá nhiều hàm ẩn danh có thể làm cho mã của bạn trở nên khó đọc.