Nội dung bài viết
Video học lập trình mỗi ngày
Ở bài trước chúng ta đã nói về Immutability JS là gì?, kèm theo đó là những khái niệm về lập trình thủ tục, lập trình khai báo. Anh em đang mông lung thì có thể đọc qua để hiểu hơn.
First-class function là gì
First-class function hay còn gọi là chức năng hạng nhất, dịch ra như vậy cho nó đúng việc dịch thuật thôi chứ chẳng có ý nghĩa gì cả. Đừng cố hiểu kỹ, vì bạn ngày nào chả thực hiện việc đó. 3 đặc điểm cần nhớ khi nói đến First class function
đó chính là:
- Gán một biến cho một hàm
- Sử dụng một hàm làm argument
- Return về một function
Xem thêm: Series Functional Programming
Gán một biến cho một hàm
Ví dụ thế này:
// Gán một hàm ẩn danh cho một biến
const fn = function() {
console.log("alo");
}
fn(); // fn_bar
// Gán một hàm có tên cho một biến
const fn2 = function name() {
console.log("Anonystick");
}
fn2(); // fn2_bar
Nhìn sơ qua là hiểu rồi. Theo ví dụ trên thì ta có thể khẳng định đó là một biến có thể gán cho một function.
Truyền một hàm dưới dạng tham số
Tiêu đề có thể gây hoang mang, nhưng nói đến callback là gì? Anh em lại cảm thấy yên tâm. Vâng nó chính là callback
đấy:
Ví dụ:
function callback() {
return "Hello, ";
}
function sayHi(callback, name) {
console.log(callback() + name);
}
// Chuyển hàm `callback` qua `sayHi` làm tham số.
sayHi(callback, "anonystick!"); // Hello, anonystick!
Trường hợp này thì quá rõ ràng, thời xa xưa anh em toàn xài callback
đến khi nào chết thì thôi. Giờ từ khi những tính năng tốt nhất của ECMAScript giới thiệu thì, mình chuyển sang async/await sử dụng nên cũng ít xài callback.
Trả về một function
Thay vì bình thường return về một giá trị nào đó? thì sử dụng chức năng hạng nhất có thể trả về một function, xem ví dụ sau đây:
function sayHi() {
// Trả về một hàm ẩn danh
return function () {
console.log("Hi~");
};
}
// Hoặc có thể sử dụng
const foo = sayHi();
foo(); // Hi~
// Hoặc
sayHi()(); // Hi~
NHìn vào anh em có nhớ đến chức năng gì không? Nó giống như khái niệm Closure là gì? mà các anh phỏng vấn hay hỏi đó. Vâng chả khác gì là mấy.
Ngoài ra nếu như bạn nào được nghe về higher-order functions thì đó cũng là một ví dụ phổ biến nhất bạn có thể hiểu.
Để hiểu rõ hơn về Lập trình hàm anh xem cố gắng xem lại những bài trước kia hén.