美文网首页好文一箩筐Web前端之路让前端飞
我眼中的js编程(4)--关于函数我想说的

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

作者: 闫浩奇 | 来源:发表于2017-09-18 10:31 被阅读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谢谢

    相关文章

      网友评论

        本文标题:我眼中的js编程(4)--关于函数我想说的

        本文链接:https://www.haomeiwen.com/subject/opcpsxtx.html