Plenty of π
Module 5: Functions
Callback Functions

A callback function is a function passed into another function as an argument, which is then invoked (called back) inside the outer function to complete some kind of routine or action. Callbacks are fundamental to asynchronous programming in JavaScript (like handling responses from server requests, timers, or user events).

Synchronous Callback Example:

function processArray(arr, callback) {
  let newArray = [];
  for (let i = 0; i < arr.length; i++) {
    newArray.push(callback(arr[i]));
  }
  return newArray;
}

let numbers = [1, 2, 3, 4];

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

function square(num) {
  return num * num;
}

let doubledNumbers = processArray(numbers, double);
console.log(doubledNumbers); // Output: [2, 4, 6, 8]

let squaredNumbers = processArray(numbers, square);
console.log(squaredNumbers); // Output: [1, 4, 9, 16]

// Using an anonymous function as a callback
let incrementedNumbers = processArray(numbers, function(num) {
  return num + 1;
});
console.log(incrementedNumbers); // Output: [2, 3, 4, 5]

// Using an arrow function as a callback
let decrementedNumbers = processArray(numbers, num => num - 1);
console.log(decrementedNumbers); // Output: [0, 1, 2, 3]

Many built-in JavaScript methods, especially for arrays, use callbacks (e.g., forEach, map, filter, reduce).