CALLBACK

FUNCTIONS

Objectives

  • Define callback functions

  • Define higher order functions

  • Use a callback function to make your code more general

  • Create callbacks using anonymous functions

A callback function is...

a function that is passed into another function as a parameter then invoked by that other function

function callback() {
  console.log("Coming from callback");
}

function higherOrder(fn) {
  console.log("About to call callback");
  fn(); // Callback function is invoked
  console.log("Callback has been invoked");
}

higherOrder(callback);

Callback Example

A higher order function is...

a function that accept a callback as a parameter

function callback() {
  console.log("Coming from callback");
}

function higherOrder(fn) {
  console.log("About to call callback");
  fn(); // Callback function is invoked
  console.log("Callback has been invoked");
}

higherOrder(callback);

Callback Example

What are callbacks used for?

  • Advanced Array Methods

  • Browser events

  • AJAX Requests

  • React Development

function sendMessageConsole(message) {
  console.log(message);
}

function sendMessageAlert(message) {
  alert(message);
}

function sendMessageConfirm(message) {
  return confirm(message);
}

sendMessageAlert("Lots of duplication");

Duplicate Code Without Callbacks

function sendMessage(message, callback) {
  return callback(message);
}

sendMessage("Message for console",
            console.log);

sendMessage("Message for alert", alert);

var answer = sendMessage("Are you sure??",
                         confirm);

Code Reuse With Callbacks

function greet(name, formatter) {
  return "Hello, " + formatter(name);
}

function upperCaseName(name) {
  return name.toUpperCase();
}

greet("Tim", upperCaseName);

Callbacks With Function Declarations

function greet(name, formatter) {
  return "Hello, " + formatter(name);
}

greet("Tim", function(name) {
  return name.toUpperCase();
});

greet("Tim", function(name) {
  return name + "!!!!!";
});

Callbacks With Anonymous Functions

LIVE

CODE

Callbacks

By Elie Schoppik

Callbacks

  • 3,521