LazyCodet

a

01:35:52 6/3/2025 - 0 views -

Hàm ẩn danh | Function anonymouse

Hàm Anonymous là gì?

Hàm anonymous (hàm vô danh) là một hàm không có tên. Thay vì đặt tên cho hàm, chúng ta sẽ định nghĩa và sử dụng nó trực tiếp.

Tại sao sử dụng hàm anonymous?

  1. Tạm thời: Khi bạn chỉ cần một hàm để thực hiện một việc duy nhất, một lần duy nhất, không cần phải đặt tên cho nó.
  2. Không gây ô nhiễm: Hàm không có tên giúp giữ cho mã của bạn sạch sẽ, không thêm vào bất kỳ tên nào vào phạm vi toàn cục.
  3. Callback: Thường được dùng khi bạn muốn truyền một hàm vào một hàm khác để thực hiện một hành động sau này.

Ví dụ đơn giản:

  • Hàm Anonymous Đơn giản:
    (function() {
          alert("Hello, World!");
      })();

    Đoạn mã này định nghĩa một hàm không có tên và gọi nó ngay lập tức (IIFE - Immediately Invoked Function Expression). Nó sẽ hiển thị một thông báo "Hello, World!".

  • Hàm Anonymous làm Callback:
    let numbers = [1, 2, 3];
      numbers.forEach(function(num) {
          console.log(num);
      });

    Ở đây, chúng ta sử dụng hàm anonymous để in ra từng phần tử của mảng numbers. Hàm này được truyền vào forEach để thực hiện một hành động (in ra số) cho mỗi phần tử.

Điều cần lưu ý:

  • Không thể gọi lại: Vì không có tên, bạn không thể gọi lại hàm này sau khi nó đã được định nghĩa. Nếu bạn cần gọi lại, bạn phải gán hàm anonymous vào một biến hoặc thuộc tính:
    let myFunction = function() {
          console.log("I can be called again");
      };
      myFunction(); // I can be called again
  • Closure: Hàm anonymous có thể tạo ra closure, nghĩa là nó có thể "nhớ" các biến từ phạm vi bên ngoài:
    let count = 0;
      let counter = function() {
          count++;
          console.log(count);
      };
      
      counter(); // 1
      counter(); // 2
  • Arrow Functions: Một cách đơn giản hơn để viết hàm anonymous từ ES6:
    let numbers = [1, 2, 3];
      numbers.forEach(num => console.log(num));

Kết luận:

Hàm anonymous là một công cụ hữu ích trong JavaScript, cho phép bạn tạo ra các hàm tạm thời, xử lý sự kiện, và tạo ra các khối mã có thể tự thực thi mà không cần phải đặt tên cho chúng. Nó giúp mã của bạn gọn gàng và tránh ô nhiễm không gian tên. Tuy nhiên, nếu bạn cần gọi lại hàm đó sau này, bạn nên đặt tên cho nó hoặc gán nó vào một biến.