Hàm callback trong JavaScript

Hàm có thể được truyền vào các hàm khác dưới dạng tham số. Các hàm-tham số như vậy được gọi là callback (callback). Hãy cùng xem cách làm việc với chúng qua ví dụ.

Giả sử chúng ta muốn tạo một hàm, nhận tham số đầu tiên là một mảng, và tham số thứ hai là một callback, sẽ được áp dụng cho từng phần tử của mảng:

javascriptfunction each(arr, callback) {
  // mã ở đây
}

Hãy viết phần triển khai cho hàm của chúng ta:

javascriptfunction each(arr, callback) {
  let result = [];
  
  for (let elem of arr) {
    result.push( callback(elem) ); // gọi hàm callback
  }
  
  return result;
}

Hàm each của chúng ta là hàm tổng quát. Điều này có nghĩa là chúng ta có thể truyền vào nó những callback khác nhau, thực hiện các thao tác khác nhau trên mảng. Đồng thời, mã của hàm chúng ta vẫn giữ nguyên không đổi - chỉ có các callback được truyền vào là thay đổi.

Lấy ví dụ, hãy sử dụng hàm của chúng ta để bình phương mỗi phần tử của một mảng bất kỳ. Để làm điều này, chúng ta truyền vào một callback tương ứng làm tham số:

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 2;
});

console.log(result);

Bây giờ hãy lập phương các phần tử của mảng. Để làm điều này, chúng ta truyền một callback khác thực hiện thao tác này làm tham số:

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 3;
});

console.log(result);
Задание 1

Cho một mảng số. Sử dụng hàm each mà chúng ta đã tạo, hãy tăng gấp đôi mỗi phần tử.

Задание 2

Cho một mảng chuỗi. Sử dụng hàm each mà chúng ta đã tạo, hãy đảo ngược các ký tự của mỗi chuỗi theo thứ tự ngược lại.

Задание 3

Cho một mảng chuỗi. Sử dụng hàm each mà chúng ta đã tạo, hãy viết hoa ký tự đầu tiên của mỗi chuỗi.