I don't understand about higher-order function parameter passed in example

Advertisements

I was reading article about higher-order functions. And they give code example like this:

var humans = function(data) {
  return data.filter(function(character) {
    return character.species === 'human';
  })
}

var images = function(data) {
  return data.map(function(character) {
    return character.img;
  })
}

function compose(func1, func2) {
  return function(data) {
    return func2(func1(data));
  };
}

var displayCharacterImages = compose(humans, images);

The one thing that’s I don’t understand is where is the data are gonna passed in compose function? I mean we only pass func1, func2 as params. So where can the data go in compose function?
I am still a newbie so please help me understand this

>Solution :

Compose function returns a function not a value.
So when you call compose you get a function.
displayCharacterImages is a function not a value.

The data variable is the returned functions argument.

Basically, you will be doing this :
displayCharacterImages(foo)
So data here will get the value you passed in foo.

Leave a ReplyCancel reply