[Javascript] Write a function pipeline

const _pipe = (f, g) => (...args) => g(f(...args))

export const pipe = (...fns) => fns.reduce(_pipe)
import {partial, pipe} from ‘./utils‘

const add = (a, b) => a + b
const addThree = (a, b, c) => a + b + c
const inc = (num) => num + 1
const dbl = (num) => num * 2

test(‘pipe passes the results of inc to dbl‘, () => {
  const pipeline = pipe(inc, dbl) // => dbl(inc(2)) OR g(f(...args))
  const result = pipeline(2)
  expect(result).toBe(6)
})

test(‘pipe passes the results of dbl to inc‘, () => {
  const pipeline = pipe(dbl, inc) // => inc(dbl(2))
  const result = pipeline(2)
  expect(result).toBe(5)
})

test(‘pipe works with more than 2 functions‘, () => {
  const pipeline = pipe(add, inc, dbl, inc) // => inc(dbl(inc(add(1,2))))
  const result = pipeline(1,2)
  expect(result).toBe(9)
})
时间: 2025-01-02 09:11:24

[Javascript] Write a function pipeline的相关文章

JavaScript笔记之Function

一.函数定义 (1)使用function declaration 格式:function functionName(parameters) { function body } 注:此种方式声明的函数作用域是全局的,即在声明之前可以调用 (2)使用function expression 格式:var name = function (parameters) { function body }; 注:与(1)不同,在声明之前不可以调用 (3)使用function constructor() 格式:v

Javascript Object、Function对象

1.Object对象 原型对象 原型是对象的一个属性,也就是prototype属性,每个对象都有这个内部属性,而且他本身也是一个对象. ? 1 2 3 4 5 6 <script type="text/javascript">      Object.prototype.num= 10;      alert("添加原型对象属性:"+ Object.num);      Object.num = 20;      alert("添加对象属性:&

javascript中的function对象

function对象都是Function的实例: > Object.getOwnPropertyNames(Function) [ 'length', 'name', 'arguments', 'caller', 'prototype' ] 所以function对象也应该有这些方法或者是属性: <script type="text/javascript"> var myFunction = function func(name,age){ //请注意,直接调用这个函数

javascript中的function

function / 对象 所有的变量和方法名的:以字母,$ _开头其他随便,尽量使用英文字母命名,见名知意注意点:不允许使用关键字定义变量和方法的名称====函数即方法,方法即函数====百度:javascript关键字格式:function 函数名称(变量的定义规则)(形参列表){ 函数体 return ""; 不是一定要return,你有需要的时候才用return ,你打算把函数里你觉得要返回的数据,}; 注意二:把function当做一个数据类型,"不要当做一个方法&

深入理解javascript中的Function.prototye.bind

函数绑定(Function binding)很有可能是你在开始使用JavaScript时最少关注的一点,但是当你意识到你需要一个解决方案来解决如何在另一个函数中保持this上下文的时候,你真正需要的其实就是 Function.prototype.bind(),只是你有可能仍然没有意识到这点. 第一次遇到这个问题的时候,你可能倾向于将this设置到一个变量上,这样你可以在改变了上下文之后继续引用到它.很多人选择使用 self, _this 或者 context 作为变量名称(也有人使用 that)

javascript中的Function和Object

写的很好,理解了很多,特此转发记录 转自:http://blog.csdn.net/tom_221x/archive/2010/02/22/5316675.aspx 在JavaScript中所有的对象都继承自Object原型,而Function又充当了对象的构造器,那么Funtion和Object到底有着什麽样的关系呢 ? 首先,一切都是对象. 1 alert(Object instanceof Object); // true 2 alert(Function instanceof Objec

【JavaScript】【学习】3、JavaScript中的function类型

在JavaScript中,函数其实是对象 函数名其实是指向一个函数对象的指针=>将函数名赋值为null,函数依然存在 =>使用布袋括号的函数名是访问函数指针,而不是调用函数 1,函数不会重载,声明两个同名函数,后者会覆盖前者 2,函数声明与函数表达式 函数的两种声明方式: function functionName() {do something} var functionName = new function(){do something}; 两种方式的区别在于在后者之前使用alert(fu

理解 JavaScript 中的 Function.prototype.bind

函数绑定(Function binding)很有可能是你在开始使用JavaScript时最少关注的一点,但是当你意识到你需要一个解决方案来解决如何在另一个函数中保持this上下文的时候,你真正需要的其实就是 Function.prototype.bind(),只是你有可能仍然没有意识到这点. 第一次遇到这个问题的时候,你可能倾向于将this设置到一个变量上,这样你可以在改变了上下文之后继续引用到它.很多人选择使用 self, _this 或者 context 作为变量名称(也有人使用 that)

JavaScript中的Function引用类型

引言 在JavaScript中最有意思的就是函数了,这一切的根源在于函数实际上是一个对象.每一个函数都是Function类型的实例,而且都和其他引用类型的实例一样具有属性和方法.函数作为一个对象,因此函数名称实际是一个指向函数对象的指针,不会与某一个函数进行绑定. 函数没有重载 前面部分介绍过,函数名称实际是指向函数对象的一个指针,这样就不难理解Javacript中的函数不存在函数重载了.请看下面的例子 1 function addNumber(number) { 2 return 100 +