关于高阶函数compose中数据参数传入位置的疑问
关于compose函数数据传入的解释
先拆解这段代码的逻辑:
- compose函数的本质是返回新函数
compose(func1, func2)执行后并不会直接处理数据,它的作用是生成并返回一个全新的匿名函数,这个匿名函数才是真正接收data参数的角色。
你可以把var displayCharacterImages = compose(humans, images);这行代码,等价于:
var displayCharacterImages = function(data) { return images(humans(data)); };
- 数据是传给生成的新函数的
当你需要处理数据时,不是把数据传给compose,而是传给displayCharacterImages这个由compose生成的函数。举个实际调用的例子:
// 模拟一组角色数据 const characterData = [ { species: 'human', img: 'rick.jpg' }, { species: 'alien', img: 'krombopulos_michael.jpg' }, { species: 'human', img: 'morty.jpg' } ]; // 把数据传给displayCharacterImages,就能得到人类角色的图片地址数组 const humanCharacterImages = displayCharacterImages(characterData); console.log(humanCharacterImages); // 输出 ['rick.jpg', 'morty.jpg']
- 总结
compose的任务是组合两个函数的执行逻辑:规定“先执行第一个函数,再把第一个函数的结果作为参数传给第二个函数”。- 数据的传入时机是在调用
compose生成的新函数时,而不是调用compose本身时。
内容的提问来源于stack exchange,提问作者Giii
相关产品推荐
相关产品推荐

