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.