函数式编程
和lisp这种纯粹的函数式编程不一样,js可以实现其为函数式编程

使用函数处理数组

计算一个数组的平均值

// 定义一个用于计算和的函数
var sum = function(x, y){return x + y;};// 初始化将要处理的数据
var data = [23, 34, 324, 34, 45, 123, 56, 23];
var mean = data.reduce(sum) / data.length;

查看一下这个值

mean;
82.75

reduce() 方法为数组的注入

高阶函数

操作函数的函数,接受一个或多个函数作为参数,并返回一个新函数

agrements 所有非箭头函数的局部变量,使用agreements对象在函数中引用函数的参数,对象包含传递给该函数的每个参数的条目,并返回一个数组

function a(){console.log(arguments)};
a(3,24,54,45);
Arguments
​
0: 3
​
1: 24
​
2: 54
​
3: 45
​
callee: function a()
​
length: 4
​
Symbol(Symbol.iterator): function values()
​
<prototype>: Object { … }
debugger eval code:1:14
undefined

this指代调用这个函数的对象

下方是关于every方法的使用示例,因为下方要使用every方法(注,这个方法每个函数都具有)

> function a(number, index){return number > index};
undefined
> var b = [-3,-2,-5,-3,234,45,324,56,234];
undefined
> b.every(a);
false
> var b = [234,345,546,234,435,234];
undefined
> b.every(a);
true
>
// 这个高阶函数将会返回一个新的函数
// 这个高阶函数将会对其返回的函数求反
function not(f) {   // 传入的函数为freturn function() {var result = f.apply(this, arguments); // 在此处调用函数f(),并将其结果赋值给result this指代其传入的对象,arguments指代传入的参数return !result; // 将调用函数完成后的值取反,并返回}
}
> var even = function(x){return x % 2 === 0 };
undefined
> var odd = not(even);
undefined
> [234,34,234,345,56,234,234,45,234].every(odd);
false
>

大概解释一下,因为这个函数传入的是一个函数,所以先取得这个函数的取反后的函数,然后将取反后的结果赋值一个新的变量,在对这个取反后返回的函数使用every方法,取得遍历。得出结果

not为高阶函数,接收一个函数,并将这个函数进行处理,在进行返回,调用的时候双括号直接调用,或者即可。

ps;关于es6的写法

function (x) {return x + 6;
}

等价于

x => x + 6;

高阶函数;
接收f()和g(),并返回f(g())

function compoes(f, g) {return function() { // 因为是对函数进行处理,所以返回为函数return f.call(this, g.apply(this, arguments));};
}

来运行一下这个函数
计算f1(f2())

var f1 = function(x){ return x*x };
undefined
var f2 = function(x, y){return x + y};
undefined
var f3 = compoes(f1, f2);
undefined
f3(2,3);
25

ok~
耶,灰常完美,完成了高阶函数,对于函数的处理

使用函数处理数组 高阶函数 js相关推荐

  1. 一木.溪桥学Python-09:函数的返回值、函数的作用域、作用域的优先级、递归函数、内置文件中常用方法、匿名函数lambda、高阶函数

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-09:函数的返回值.作用域.作用域的优先级.递归函数.内置文件中常用方法.匿名 ...

  2. java 高阶函数_谈谈高阶函数给我们带来了什么。

    什么是高阶函数 一句话解释的话,就是函数可以作为参数以变量的方式持有,引用,构造和使用 一些文章我随手搜的,大家可以看看,它本身的概念并不复杂. 高阶函数-廖雪峰 高阶函数-wiki 其实现在主流语言 ...

  3. python阶乘匿名函数_python的高阶函数与匿名函数

    一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...

  4. Kotlin的高阶函数和常用高阶函数

    Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...

  5. python四大高阶函数_四大高阶函数

    目录 1. 匿名函数 在我们需要一个函数但又不想费神的去命名一个函数的场合下使用,这就是匿名函数 1 f = lambda x,y,z:x+y+z2 defF(x,y,z):3 return x+y+ ...

  6. python 把函数作为参数 ---高阶函数

    把函数作为参数 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数:def add(x, y, f):return f(x) + f(y) 如果传入abs作为参数f的值:add(-5, ...

  7. Python 基础之匿名函数 迭代器和高阶函数

    一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func():     ret ...

  8. html相乘函数是什么,高阶函数求导公式

    复合函数的高阶导数公式比如y=f(x)可以看做y=u(t)和t=v(x)的复合,那么用链式法则 链式法则是微积分中的CSS布局HTML小编今天和大家分享导法则,用以CSS布局HTML小编今天和大家分享 ...

  9. export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

    高阶函数的定义 在<javascript设计模式和开发实践>中是这样定义的. 函数可以作为参数被传递: 函数可以作为返回值输出. 结合这两个特点,首先想到的肯定是回调函数,回调函数也是高阶 ...

最新文章

  1. Windows锁定计算机C代码编程实现
  2. python3 上传文件到目标机器_Python3 +服务器搭建私人云盘,再也不怕限速了
  3. 一步一步写算法(之 算法总结)【转】
  4. 2015.09.05 C++中类的static与const成员
  5. 程序清单4.1_talkback.c程序_《C Primer Plus》P60
  6. tesseract 样例
  7. [转]知乎大神YaqiLYU关于tracking方向的2013-2016趋势总览!!!强烈推荐!!!
  8. 3、ORBSLAM闭环检测终局之战之sim3计算流程,确定是否检测到闭环
  9. 30 行代码实现,支付宝蚂蚁森林自动收能量!
  10. word2016毕业论文不同章节设置不同页眉方法
  11. 专业商标设计、logo免费在线设计
  12. 用phpcms切换中英文网页的方法(不用解析二级域名)、phpcms完成pc和手机端切换(同一域名)...
  13. 算法系列之1:计算中国农历(一) .
  14. Postgresql杂谈 16—Postgresql中的锁机制
  15. SpringMVC返回数据到页面的方法
  16. Java培训出身,今获阿里Android岗offer,大专学渣的“登天”之路!
  17. 【参观微软分享有礼】微软拥抱开源
  18. STM32蜂鸣器模拟播放歌曲--《世间美好与你环环相扣》《生日歌》
  19. 计算机硬盘管理 3t,3T硬盘的使用方法总结与分享
  20. 理工男生资源达人的梦想,树莓派低成本创造私人专属互联网的构想及实现

热门文章

  1. Git忽略文件或文件夹
  2. 如何迅速掌握并提高linux运维技能
  3. vmware 克隆 LVM 分区的系统
  4. Tiny快速入门之服务开发
  5. How to check firmware and drivers of a VMware ESXi host
  6. 技术人生:给自己安慰的10句温馨话
  7. 笔记本CPU和显卡的选择标准
  8. 0.3:Before We Start
  9. Spket在Eclipse/MyEclipse下的安装和配置支持Ext(图文教程)
  10. Google对Gmail的所有通信进行SSL加密