=> xuất hiện khắp nơi - trong callback của fetch, trong các method như .map(), .filter(), hay trong các component của React. Nếu chưa quen với Arrow Function, code của người khác sẽ trông khá lạ lẫm.
Bài viết này là một “refresher” nhanh về Arrow Function, giúp bạn đọc và viết được cú pháp này trước khi bước vào học bất kỳ JavaScript stack nào.
Arrow Function là gì?
Arrow Function là cú pháp rút gọn để khai báo function, được giới thiệu từ ES6 (2015). Thay vì viếtfunction() { ... }, bạn dùng () => { ... }.
Ví dụ đơn giản nhất:
.map(), .filter(), .then(), vì nó giúp code ngắn gọn và dễ đọc hơn.
Cách khai báo
Function bình thường (function expression)
Arrow Function
Arrow Function rút gọn - nếu chỉ có 1 dòng return
Khi thân hàm chỉ có một biểu thức duy nhất để trả về, bạn có thể bỏ luôn {} và return:
(), siêu gọn:
Dùng Arrow Function như callback
Đây là nơi Arrow Function tỏa sáng nhất. So sánh 3 cách viết callback cho.then():
Function lồng Function
Một pattern hay gặp là truyền Arrow Function trực tiếp làm argument khi gọi hàm, thay vì phải khai báo riêng:Lưu ý quan trọng
1. Không có hoisting - phải khai báo trước khi dùng
Function bình thường được “hoisted” lên đầu file, nên bạn có thể gọi nó trước khi khai báo. Arrow Function thì không.2. Không có this
Đây là điểm khác biệt lớn nhất. Function bình thường tạo ra this riêng của nó, trỏ đến object đang gọi hàm. Arrow Function không tạo this, nên nó dùng this từ scope bên ngoài.
sayHelloArrow không có this của riêng nó, nên this ở đây trỏ ra scope bên ngoài object - là {} (trong Node.js ES Modules) hoặc window (trong browser). Cả hai đều không có thuộc tính name, nên kết quả là undefined.
Khi nào nên dùng function bình thường? Khi bạn cần truy cập this, ví dụ trong object methods hay class methods. Với các callback thuần túy không liên quan đến this, Arrow Function là lựa chọn tốt hơn.
Tóm tắt
Arrow Function không phải là “phiên bản mới hơn” của function bình thường, mà là một công cụ khác phù hợp với những tình huống khác nhau. Trong thực tế, bạn sẽ dùng Arrow Function cho hầu hết các callback (
.map, .filter, .then…), và dùng function bình thường khi cần this.
Khi đã quen với Arrow Function, bạn sẽ sẵn sàng hơn để đọc code trong React, Node.js, hay bất kỳ JavaScript stack nào khác.