Các hàm thông thường và các hàm Mũi tên trong javascript. Cái gì và khi nào?

Tram Ho

Trước đây khi mới làm việc với javascript mình rất hay bị nhầm lẫn giữa 2 khái niêm này,dùng lung tung cả.
Bây giờ chúng ta cùng đi tìm hiểu xem 2 kiều function này khác nhau như nào để tránh nhầm lẫn trong khi sử dụng nhé !

1.Khai báo

Regular function

Arrow function

Về cách khai báo thì arrow function sẽ cho ta cú pháp nhanh gọn hơn,không cần phải sử dụng keyword function.

2.Từ khoá this

Cùng xem ví dụ sau đây

Chúng ta khai báo object person có 2 property firstname và lastname.Bây giờ chúng ta xem kết quả của 2 function showFullNameWithRegularshowFullNameWithArrow xem như nào nhé !

showFullNameWithRegular

Kết quả :

Kết quả đúng như mong đợi ,cùng xem showFullNameWithArrow thì sao nhé.

showFullNameWithArrow

Kết quả

Ồ không.Sao lại undefined thể nàỳ.đây chính là sự khác biệt giữa arrow function và regular function.
Cả 2 function showFullNameWithRegular và showFullNameWithArrow đều được khai báo như 1 property của object person và thực hiện
1 đoạn code như nhau.Nhưng với showFullNameWithRegular thì chúng ta thu được kết quả như mong muốn còn showFullNameWithArrow thì không bới vì

1.Regular function sẽ có từ khoá this của chính nó còn arrow function thì không.
2.Regular function sẽ có bind còn arrow function thì không

3.Khi chúng ta thực hiện đoạn code

thì function showFullNameWithArrow implict binding – ngầm chỉ định từ khoá this của nó là object person tương đương với:

Còn với arrow function thì không,nó sẽ không hiểu được !

Cùng xét tiếp ví dụ tiếp theo chúng ta có đoạn code sau:

Kết quả :

Khi chúng ta khai báo function như là 1 callback function .Với regular function từ khoá this vẫn sẽ là context của nó.Còn arrow function thì từ khoá this sẽ là scope của nó !

Tổng kết

Nên sử dụng Arrow function khi :

  • Callback function
  • Pure function

Nên sử dụng Regular function khi :

  • Protype function
  • Property object function
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo