var flow = function (fns) {
  var len = fns.length

  // 检查所有参数是否为函数
  var index = len
  while (index--) {
    if (typeof fns[index] !== 'function') {
      throw new TypeError('Expected a function')
    }
  }

  return function (...args) {
    var index = 0
    // 传入数组为空, 错误的话, 执行后面的啊, 傻瓜, 竟然卡了这么久, 也真是够了
    var reslut = len ? fns[index].apply(this, args) : args[0]
    while (++index < len) {
      reslut = fns[index].call(this, reslut)
    }
    return reslut
  }
}