0
0
Lập trình
Admin Team
Admin Teamtechmely

Khám Phá Kỹ Thuật Currying Trong JavaScript: Lợi Ích và Cách Thực Hiện

Đăng vào 3 tháng trước

• 2 phút đọc

Currying Trong JavaScript: Tổng Quan và Cách Thực Hiện

Trong lập trình JavaScript, currying là một kỹ thuật mạnh mẽ giúp biến đổi hàm nhận nhiều tham số thành một loạt các hàm, trong đó mỗi hàm chỉ nhận một tham số duy nhất. Việc này làm cho mã nguồn trở nên linh hoạt và dễ bảo trì hơn.

Currying Là Gì?

Currying giúp bạn chuyển đổi một hàm như foo(a, b, c) thành một chuỗi hàm như curriedFoo(a)(b)(c). Mục tiêu chính của kỹ thuật này là tăng cường khả năng tái sử dụng hàm và tạo ra các hàm áp dụng một phần, từ đó giảm thiểu lượng mã phải viết.

Hiện Thực Currying Trong JavaScript

Hãy cùng khám phá cách bạn có thể thực hiện currying trong JavaScript thông qua đoạn mã sau:

javascript Copy
function currying(functionToBeCurried) {
  return function curriedFunction(...args) {
    if (args.length >= functionToBeCurried.length) {
      return functionToBeCurried.apply(this, args);
    } else {
      return function (...args2) {
        return curriedFunction.apply(this, args.concat(args2));
      };
    }
  };
}

Giải thích đoạn mã: Nếu số lượng tham số được cung cấp lớn hơn hoặc bằng số tham số yêu cầu của hàm gốc, hàm gốc sẽ được thực thi ngay. Nếu không, một hàm mới sẽ được tạo ra, cho phép bạn nhập thêm các tham số cho đến khi đủ.

Ví Dụ Về Hàm PrintBill() Sử Dụng Currying

Để củng cố hiểu biết về currying, chúng ta hãy xem xét hàm printBill(), được áp dụng kỹ thuật currying như sau:

javascript Copy
const prices = {
  "Product 1": 10,
  "Product 2": 20,
  "Product 3": 30,
};

function printBill(date, productName, quantity) {
  let headerString = "Date     Product    Total";
  let message = `${date.toDateString()}  ${productName}   ${quantity * prices[productName]}`;

  console.log(headerString);
  console.log(message);
}

let curriedPrintBill = currying(printBill);

Hãy khám phá cách gọi cả hàm gốc và hàm đã được currying:

javascript Copy
const today = new Date();
printBill(today, "Product 1", 10); // Gọi hàm gốc.
curriedPrintBill(today, "Product 1", 10); // Gọi hàm đã được currying.
curriedPrintBill(today)("Product 1")(10); // Gọi hàm với từng tham số riêng lẻ.
curriedPrintBill(today)("Product 1", 10); // Gọi hàm với nhiều tham số.

Lợi Ích Của Currying

Một trong những ứng dụng hữu ích nhất của currying là khả năng tạo ra “hàm áp dụng một phần” (partially applied function). Điều này cho phép bạn cố định một hoặc nhiều tham số và tạo ra các phiên bản hàm mới.

Dưới đây là một ví dụ:

javascript Copy
let printTodaysBill = curriedPrintBill(today);
printTodaysBill("Product 1", 10);

Ngoài ra, bạn cũng có thể tạo ra các hàm áp dụng một phần với các tham số khác nhau:

javascript Copy
let printTodaysBillForProduct1 = curriedPrintBill(today)("Product 1");
printTodaysBillForProduct1(10);

Kết Luận

Currying là một kỹ thuật hữu ích trong lập trình JavaScript, giúp mã trở nên rõ ràng và dễ sử dụng hơn. Mong rằng thông tin này sẽ giúp bạn hiểu rõ hơn về currying cũng như ứng dụng của nó trong JavaScript. Hãy thử nghiệm và áp dụng currying trong dự án của bạn để tận dụng tối đa lợi ích mà nó mang lại!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào