Bí mật hàm mũi tên JavaScript: ()=>{} vs ()=>() - Khi nào nên dùng?
Hiểu Về Hàm Mũi Tên (Arrow Function) Trong JavaScript
Hàm mũi tên đã trở thành một phần quan trọng trong JavaScript hiện đại, giúp lập trình viên viết mã một cách ngắn gọn hơn. Tuy nhiên, sự khác biệt giữa cú pháp () => {}
và () => ()
có thể gây nhầm lẫn cho nhiều người. Bài viết này sẽ giúp bạn phân tích và hiểu rõ hơn về chúng.
1. Cú Pháp () => {}
(Với Dấu Ngoặc Nhọn)
Đặc Điểm:
- Cú Pháp: Sử dụng dấu ngoặc nhọn
{}
sau mũi tên=>
để định nghĩa một thân hàm. - Trả về Giá Trị: Để trả về một giá trị, bạn cần sử dụng từ khóa
return
. - Giá Trị Mặc Định: Nếu không có
return
, giá trị trả về sẽ làundefined
.
Ví Dụ:
const add = (a, b) => {
return a + b; // Cách trả về rõ ràng
};
console.log(add(2, 3)); // Kết quả: 5
Tổng Kết:
- Dấu ngoặc nhọn cho thấy đây là một hàm đầy đủ với nhiều câu lệnh.
- Phải có từ khóa
return
để trả về giá trị.
2. Cú Pháp () => ()
(Có Dấu Ngoặc Đơn)
Đặc Điểm:
- Cú Pháp: Sử dụng dấu ngoặc đơn
()
sau mũi tên=>
cho phép trả về giá trị ngầm định. - Cách Viết Tắt: Đây là cách viết ngắn gọn để trả về một biểu thức duy nhất.
- Không Cần Từ Khóa Return: Không cần sử dụng từ khóa
return
.
Ví Dụ:
const add = (a, b) => a + b; // Cách trả về ngầm định
console.log(add(2, 3)); // Kết quả: 5
Tổng Kết:
- Dấu ngoặc đơn biểu thị sự trả về ngầm định của biểu thức.
- Không cần dùng từ khóa
return
.
Khi Nào Nên Sử Dụng ()
và {}
1. Sử Dụng () => {}
Khi:
- Hàm có nhiều câu lệnh hoặc logic phức tạp.
- Cần kiểm soát rõ ràng giá trị trả về.
Ví Dụ:
const processNumbers = (a, b) => {
const sum = a + b;
const product = a * b;
return sum + product; // Trả về một kết quả rõ ràng
};
console.log(processNumbers(2, 3)); // Kết quả: 11
2. Sử Dụng () => ()
Khi:
- Hàm là một biểu thức đơn và cần trả về một giá trị duy nhất.
- Muốn giữ cú pháp ngắn gọn.
Ví Dụ:
const square = (x) => x * x; // Cách trả về ngầm định
console.log(square(4)); // Kết quả: 16
Trường Hợp Khó Sử Dụng
Khi bạn muốn trả về một đối tượng bằng cách sử dụng return
ngầm định, bạn phải đặt nó trong dấu ngoặc đơn để JavaScript không hiểu nhầm là thân hàm.
Ví Dụ:
const getObject = () => ({ key: 'value' }); // Đúng: Đặt trong dấu ngoặc đơn
console.log(getObject()); // Kết quả: { key: 'value' }
const getObjectError = () => { key: 'value' }; // Sai: Hiểu nhầm là thân hàm
console.log(getObjectError()); // Kết quả: undefined
Comments ()