codersx-javascript-basic

DÙNG FUNCTION NHƯ THAM SỐ (CALLBACK)

Function as a parameter (Callback) Dùng function như một tham số Callback

Ví dụ:

function Sum(a, b) {
  return a + b;
}

Sum(2, 3); // Parameter are numbers

01. Function in Object

//Object
var coffeeMachine = {
  makeCoffee: function () {
    console.log("Making coffee...");
  },
};

console.log(coffeeMachine, typeof coffeeMachine);
coffeeMachine.makeCoffee();

Sau khi making Coffee xong sẽ báo Tít Tít

//Object
var coffeeMachine = {
  makeCoffee: function (onFinish) {
    console.log("Making coffee...");
    onFinish();
  },
};

function doneCoffee() {
  console.log("Tít tít!!!");
}

coffeeMachine.makeCoffee(doneCoffee);

=> Khi truyền Hàm vào một hàm khác thì gọi là Callback.

//Object
var coffeeMachine = {
  makeCoffee: function (onFinish) {
    console.log("Making coffee...");
    onFinish();
  },
};

function doneCoffee() {
  console.log("Tít tít!!!");
}
coffeeMachine.makeCoffee(doneCoffee);

//Viết trực tiếp vào
coffeeMachine.makeCoffee(function doneCoffee() {
  console.log("Bíp bíp.");
});

Bài Tập

Bài 01:

function sayHello() {
  console.log("I love Coders.Tokyo");
}

function countAndDo(callback) {
  for (let i = 1; i <= 10; i++) {
    callback();
  }
}

var a = countAndDo(sayHello);
console.log(a);

Bài tập 02:

function double(num) {
  return num * 2;
}

function sumAndDo(nums, callback) {
  let sum = 0;
  if (nums.length > 0) {
    for (let i in nums) {
      sum += callback(nums[i]);
    }
  }
  return sum;
}

console.log(sumAndDo([1, 2, 3, 4], double));

Bài tập 03:

  1. Viết hàm transform nhận vào 1 array gồm các số và 1 function callback. Nội dung của hàm bao gồm:
function transform(numbers, callback) {
  let result = [];
  for (let i in numbers) {
    result.push(callback(numbers[i]));
  }
  return result;
}

function double(num) {
  return 2 * num;
}

var a = transform([2, 4, 6, 8], double);
console.log(a);