好文一箩筐Web前端之路让前端飞

我眼中的js编程(4)--关于函数我想说的

2017-09-18  本文已影响36人  闫浩奇

一个函数作为另一个函数的参数进行传递,这种函数式编程的特点在js中有很多体现。下面是我用koa写服务器的一小段程序,可以看见函数作为参数传递在js中比比皆是。

const Koa = require('koa');
const app = new Koa();

//函数作为ues方法的参数传递
app.use(async (ctx,next) => {
  console.log(ctx.request.method,ctx.request.url)
});
//函数作为on方法的参数传递
app.on('error',error =>{
  console.log('server error',error)
});
//函数作为listen方法参数传递
app.listen('3030',() =>{
  console.log('server is starting-------------------')
});
module.exports = app;

函数可以看做机器或者黑箱,输入一些东西,在黑箱中进行一系列操作,输出一些东西。同一输入对应着唯一输出。

计算的本质为,一切皆函数(阿隆左 . 丘奇 lambda演算)。函数可以作为另外一个函数的输入或输出,一系列函数最终形成一个函数链,这个过程就是计算的本质。

高阶函数,"阶"就是抽象的层次。

一次抽象 对任意数组都能执行元素加一的操作

function map(arr){
  var newArr = []
  for(var i=0;i<arr.length;i++){
    newArr.push(arr[i]+=1)
  }
  return newArr
}
//调用
map([1,2,3])

二次抽象 对任意数组的元素可以执行任意的操作

function map(arr,fn){
  var newArr = []
  for(var i=0;i<arr.length;i++){
    newArr.push(fn(arr[i]))
  }
  return newArr
}
//调用
map([3,4,5],function(n){
  n = n * 2
})

函数的通用性越高,调用起来越麻烦。好比机器的功能越复杂,使用起来的配置就越麻烦一样。
每个函数只做一件简单的事情。
局部变量应该定义在靠近使用它的地方,提高可读性。

点击查看上一篇我眼中的js编程(3)
我眼中的js编程系列是我个人的学习总结,如有错误,烦请包涵、不吝赐教,O(∩_∩)O谢谢

上一篇下一篇

猜你喜欢

热点阅读