paint-brush
Hiểu các hàm bậc nhất và bậc cao hơnby@Iggy
3,491
3,491

Hiểu các hàm bậc nhất và bậc cao hơn

Ignatius Sani3m2022/11/13
Read on Terminal Reader

Hàm hạng nhất là một tính năng mà ngôn ngữ lập trình hoặc ngôn ngữ lập trình có. Nó là một hàm nhận một hàm khác làm đối số. Sự khác biệt chính giữa các hàm bậc cao là một hàm được gọi sau khi nó được gọi sau khi chạy. Trong Javascript, chúng ta có thể lưu trữ một hàm trong một biến hoặc thậm chí thuộc tính, giống như cách bạn làm với các giá trị trung bình của Javascript. Điều này mở ra một cách mới để viết mã linh hoạt hơn kể từ khi chúng tôi có thể. chức năng lưu trữ trong a. biến hoặc thêm thuộc tính.
featured image - Hiểu các hàm bậc nhất và bậc cao hơn
Ignatius Sani HackerNoon profile picture


Chào mọi người! Hôm nay tôi sẽ thảo luận về một khái niệm rất nổi tiếng trong lập trình (các hàm hạng nhất). Hiện đã có rất nhiều tài nguyên về chủ đề này, nhưng vẫn còn một số điều mới để lấy từ bài viết này và tôi đã dành thời gian để đơn giản hóa mọi thứ để hiểu rõ hơn.


Tại sao điều này lại quan trọng đối với tôi với tư cách là một nhà phát triển?

  • Nó giúp bạn hiểu rõ hơn về các chức năng gọi lại Javascript khi bạn thấy chúng được sử dụng.
  • Nó giúp bạn biết hành vi của mã của bạn.
  • Nó giúp bạn hiểu rõ hơn về lý do tại sao Javascript coi các hàm là giá trị.


Chức năng hạng nhất là gì?

Theo Wikipedia, một ngôn ngữ lập trình được cho là có các chức năng hạng nhất nếu nó coi các chức năng là công dân hạng nhất .


Điều này có nghĩa là ngôn ngữ hỗ trợ truyền các hàm dưới dạng đối số cho các hàm khác, trả về chúng dưới dạng giá trị từ các hàm khác nhau, gán chúng cho các biến hoặc lưu trữ chúng trong cấu trúc dữ liệu.


Trong Javascript, mọi thứ hoạt động theo cách này vì hàm chỉ là một loại đối tượng khác. Nếu bạn chưa quen với khái niệm này, bạn sẽ cảm thấy nó khá khó xử, đặc biệt nếu bạn đến từ một nền tảng lập trình khác, nhưng bây giờ, hãy tập trung vào điều đó. Vì các đối tượng là các giá trị nên các hàm cũng vậy và Javascript coi chúng là một. Điều này mở ra một cách mới để viết mã linh hoạt hơn vì chúng ta có thể lưu trữ các hàm trong một biến hoặc thêm các thuộc tính.

Tôi đã chia nhỏ những điểm chính thành một danh sách gạch đầu dòng để giúp mọi việc dễ dàng hơn. Để hiểu rõ hơn về các chức năng hạng nhất, đây là một vài điểm để làm rõ nó.


  • Chức năng như một đối số
  • Hàm trả về hàm
  • Chức năng như giá trị

Chức năng như một đối số

Một điều có thể thực hiện được với hàm hạng nhất là truyền hàm dưới dạng đối số; chúng ta có thể thấy kiểu mã này trong rất nhiều mã Javascript. Ví dụ: phương thức addEventListener, nhận hàm gọi lại Javascript làm đối số, vd


 button.addEventListener('click', function(){ console.log('hellloooo') })


Trong đoạn mã trước, chúng tôi quan sát thấy rằng addEventListener nhận được hai đối số, trong đó hàm thứ hai là hàm gọi lại và sẽ được gọi sau khi nhấp vào nút.


Hàm trả về hàm

Chúng ta có thể trả về các chức năng từ một chức năng khác trong Javascript; nhiều đối tượng trong Javascript có các phương thức, ví dụ: Hàm mảng trong javascript. Ngoài ra, chúng ta có phương thức của hàm, ví dụ: các phương thức Javascript call() , bind() , apply() đều có thể được gọi trên các hàm Javascript.


 function count(){ Let counter = 0; return function(){ counter++ } }


Hàm đếm trả về một hàm khác mà chúng tôi đã cập nhật bộ đếm.


Chức năng như giá trị

Trong Javascript, chúng ta có thể lưu trữ một hàm trong một biến hoặc thậm chí thuộc tính, giống như cách bạn làm với các giá trị trung bình của Javascript.


 Const multiply = (a,b) => a * b


Hàm mũi tên Javascript ở trên được lưu trữ trong biến bội số, có thể được gọi là

nhân (3,5) theo cách này.


Tầm quan trọng của các chức năng hạng nhất trong Javascript

Một trong những ý nghĩa chính của các hàm hạng nhất là chúng giúp chúng ta có thể viết các hàm bậc cao hơn.



Hàm bậc cao

Đây là một hàm nhận một hàm khác làm đối số hoặc một hàm trả về một hàm mới. Điều này chỉ có thể thực hiện được nhờ chức năng hạng nhất.


 button.addEventListener('click', function(){ console.log('hellloooo') })


Ở đây addEventListener() là một ví dụ về hàm bậc cao hơn vì nó nhận một hàm khác làm đối số. Nó thường đề cập đến chức năng gọi lại Javascript vì nó được gọi sau khi HOF chạy. Sự khác biệt chính giữa hàm bậc cao và hàm hạng nhất là hàm hạng nhất là một tính năng mà ngôn ngữ lập trình có hoặc không có, nó đơn giản có nghĩa là tất cả các hàm đều là giá trị.


Sự kết luận

Tóm lại, điều cần thiết là phải biết không có chức năng hạng nhất trong thực tế; nó chỉ là một khái niệm. Tuy nhiên, trong thực tế, có thể có các hàm bậc cao hơn vì ngôn ngữ hỗ trợ các hàm hạng nhất.