Sự khác nhau giữa anonymous function và named function trong Javascript là gì?

Introduction

Trong lập trình JavaScript, có nhiều cách để định nghĩa và sử dụng hàm. Hai cách phổ biến nhất là sử dụng anonymous function (hàm ẩn danh) và named function (hàm có tên). Trong bài viết này, chúng ta sẽ tìm hiểu rõ hơn về sự khác biệt giữa anonymous function và named function, cùng với các ví dụ minh họa từ cơ bản đến nâng cao.

Anonymous Function

Anonymous function, hay hàm ẩn danh, là hàm không có tên. Nó thường được sử dụng trong các biểu thức hàm, hoặc các callback function trong JavaScript. Dưới đây là một số ví dụ cơ bản và nâng cao về anonymous function.

Ví dụ cơ bản về Anonymous Function


// Anonymous function được gán vào biến
const sayHello = function() {
    console.log('Hello, world!');
};

sayHello(); // Kết quả: Hello, world!

Anonymous Function trong Callback


// Sử dụng anonymous function làm callback
setTimeout(function() {
    console.log('This is a delayed message');
}, 1000);
// Người tạo: vnengineer

Anonymous Function trong phương thức Array


const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(function(number) {
    return number * 2;
});

console.log(doubled); // Kết quả: [2, 4, 6, 8, 10]
// Người tạo: vnengineer

Named Function

Named function, hay hàm có tên, là hàm có một định danh (tên) và thường được sử dụng để dễ dàng nhận biết và gọi hàm. Dưới đây là một số ví dụ về cách sử dụng named function từ cơ bản đến nâng cao.

Ví dụ cơ bản về Named Function


function greet() {
    console.log('Hello, world!');
}

greet(); // Kết quả: Hello, world!
// Người tạo: vnengineer

Named Function trong recursive


function factorial(n) {
    if (n === 0) {
        return 1;
    }
    return n * factorial(n - 1);
}

console.log(factorial(5)); // Kết quả: 120
// Người tạo: vnengineer

Named Function và hoisting


foo();

function foo() {
    console.log('Function hoisting works!');
}

// Kết quả: Function hoisting works!
// Người tạo: vnengineer

Chú ý rằng với named function, hoisting đảm bảo rằng hàm có thể được gọi trước khi nó được định nghĩa trong quá trình thực thi mã.

Sự khác nhau chính giữa Anonymous Function và Named Function

Sau đây là các điểm khác nhau chính giữa anonymous function và named function:

1. Tên hàm

Anonymous function không có tên, trong khi named function có một định danh (tên). Tên này giúp dễ dàng tham chiếu và quản lý hàm trong quá trình viết mã.

2. Hoisting

Named function được hoisting, có nghĩa là chúng có thể được gọi trước khi chúng được định nghĩa trong mã. Anonymous function thì không có đặc điểm này.

3. Ngữ cảnh sử dụng

Anonymous function thường được sử dụng trong các tình huống cần một hàm tạm thời, như trong các callback function. Ngược lại, named function thường được sử dụng khi cần định nghĩa hàm độc lập và có thể được gọi từ nhiều nơi trong mã nguồn.

Kết luận

Trên đây là sự khác nhau giữa anonymous function và named function trong JavaScript. Việc hiểu rõ và sử dụng đúng loại hàm tùy vào bối cảnh sẽ giúp mã nguồn của bạn trở nên dễ đọc và hiệu quả hơn. Hy vọng bài viết này đã cung cấp cho bạn cái nhìn chi tiết và hữu ích về chủ đề này.