zoukankan      html  css  js  c++  java
  • JS对象类型函数进阶篇高阶函数

    定义

    高阶函数指操作函数的函数。高阶函数需要满足两个条件:函数可以作为参数被传递;函数可以作为返回值输出。

    参数传递

    日常开发中,把函数作为参数传递是很常见的情况,通常为了分离出容易变化的业务逻辑,会这部分逻辑放到一个函数参数里。

    【回调函数】一个常见的场景,在使用ajax请求数据时,通常把一个回调函数作为参数传给ajax请求的方法,目的是待请求完成后方便外部函数操作数据。

    var getUserData = function (id, callback){
      $.ajax('http://example.com/getUserData?id='+id, function(data){
    	if(typeof callback === 'function'){
    	  callback(data)
    	}
      })
    }
    
    getUserData(100, function(data){
    	// todo
    })
    
    getUserData(200, function(data){
    	// todo
    })
    

    【数组排序】数组的sort()方法也是一个高阶函数,它接收一个函数作为参数,方便我们自定义排序规则

    // 从小到大排序
    [ 1, 3, 2 ].sort( function( a, b ){ 
      return a - b;
    })
    // [1,2,3]
    
    // 从大到小排序
    [ 1, 3, 2 ].sort( function( a, b ){ 
      return b - a;
    })
    // [3,2,1]
    

    返回值输出

    函数执行后返回一个可执行函数,这也意味着函数的运算过程是可持续的。

    【示例】mapper()函数执行完成后返回一个新函数,这个新函数将一个数组映射到另一个使用该函数的数组上。

    function mapper(fn) {
      return function(arr) {
       return Array.prototype.map.call(arr, fn)
      }
    }
    
    var increment = function(num) {
      return num + 1
    }
    
    var result = mapper(increment)([1,2,3])
    console.log(result) // [2,3,4]
    
    优秀文章首发于聚享小站,欢迎关注!
  • 相关阅读:
    RecycleView的万能适配器
    Android Fragment
    BottomNavigationBar底部导航条用法
    Bundle的用法
    登录页面(动态地与数据库匹配用户信息)
    LitePal用法详解
    BaseAdapter的优化
    Bmob使用心得
    字符串格式化
    元素NULL判断
  • 原文地址:https://www.cnblogs.com/yesyes/p/15351903.html
Copyright © 2011-2022 走看看