Javascript中的高阶函数介绍
高阶函数:高阶看上去就像是一种先进的编程技术的一个深奥术语,一开始我看到的时候我也这样认为的。
Javascript的高阶函数
然而,高阶函数只是将函数作为参数或返回值的函数。以下面的Hello,World作为一个简单的例子。
var Moqi = function(p1){
this.add = function (p2){
return p1 + ' ' + p2;
};
return add;
};
//我们便可以这样使用这个函数
console.log(Moqi('Hello')('World'));
或许这个过程有点混乱,看看详细一点的。
typeof Moqi('Hello')
//"function"
Moqi('Hello')
//function (p2){
// return p1 + ' ' + p2;
//}
也就是说实际上Moqi('Hello')是一个函数,Moqi('Hello')
var m = Moqi('Hello')
m('World')
//"Hello,World"
从上面的情况来看,高阶函数可以使代码更简洁、高效。自然而然地我们也可以创建下面这样一个函数:
var Moqi = function(p1){
return function (p2){
return function(p3){
return p1 + ',' + p2 + ' ' +p3;
}
};
};
Moqi('Hello')('World')('Phodal')
//"Hello,World Phodal"
还原高阶函数
越来越复杂,需要引入高阶函数抽象的信号是出现重复或者相似的代码。然后,我们先一步步还原到之前的函数:
var Moqi = function(p1){
this.add = function (p2){
return function(p3){
return p1 + ',' + p2 + ' ' +p3;
}
};
return this.add;
};
接着再创建一个新的函数
var Moqi = function(p1){
this.add = function (p2){
this.add1 = function(p3){
return p1 + ',' + p2 + ' ' +p3;
};
return this.add1;
};
return this.add;
};
使用javascript中的call方法,就会有:
var Moqi = function(p1){
var self = this;
function fd(p2) {
this.add1 = function (p3) {
return p1 + ',' + p2 + ' ' + p3;
};
}
self.add = function (p2){
fd.call(this, p2);
return this.add1;
};
return self.add;
};
高阶函数实例
add = function(a,b){
return a + b;
};
function math(func,array){
return func(array[],array[]);
}
console.log(math(add,[,]));
//math(add,[1,2])
//
Javascript中的高阶函数介绍的更多相关文章
- 如何在JavaScript中使用高阶函数
将另一个函数作为参数的函数,或者定义一个函数作为返回值的函数,被称为高阶函数. JavaScript可以接受高阶函数.这种处理高阶函数的能力以及其他特点,使JavaScript成为非常适合函数式编程的 ...
- JavaScript中的高阶函数
之前写的<JavaScript学习手册>,客户跟我说有些内容不适合初学者,让我删了,感觉挺可惜的,拿到这里和大家分享. JavaScript中的一切都是对象,这句话同样适用于函数.函数对象 ...
- javascript中的高阶函数, 和 类定义Function, 和apply的使用
参考: http://www.cnblogs.com/delin/archive/2010/06/17/1759695.html js中的类, 也是用function关键字来定义的: function ...
- Javascript 闭包与高阶函数 ( 二 )
在上一篇 Javascript 闭包与高阶函数 ( 一 )中介绍了两个闭包的作用. 两位大佬留言指点,下来我会再研究闭包的实现原理和Javascript 函数式编程 . 今天接到头条 HR 的邮件,真 ...
- JavaScript进阶之高阶函数篇
JavaScript进阶之高阶函数篇 简介:欢迎大家来到woo爷说前端:今天给你们带来的是JavaScript进阶的知识,接下来的系列都是围绕着JavaScript进阶进行阐述:首先我们第一篇讲的是高 ...
- JS中的高阶函数
JS中的高阶函数 高阶函数是指以函数作为参数的函数,并且可以将函数作为结果返回的函数. 1. 高阶函数 接受一个或多个函数作为输入 输出一个函数 至少满足以上一个条件的函数 在js的内置对象中同样存在 ...
- Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted
1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...
- Python中的高阶函数与匿名函数
Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...
- Java中的函数式编程(五)Java集合框架中的高阶函数
写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程. 本文的 ...
随机推荐
- freebsd网卡驱动程序详解
freebsd网卡驱动程序详解 来源 https://blog.csdn.net/h_cszc/article/details/7776116 /* 注释:xie_minix */ /*此处为BSD申 ...
- POJ 2987 Firing | 最大权闭合团
一个点带权的图,有一些指向关系,删掉一个点他指向的点也不能留下,问子图最大权值 题解: 这是最大权闭合团问题 闭合团:集合内所有点出边指向的点都在集合内 构图方法 1.S到权值为正的点,容量为权值 2 ...
- JavaScript—获取本地时间以12小时制显示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【HDU 3336 Count the string】
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- FOJ ——Problem 1759 Super A^B mod C
Problem 1759 Super A^B mod C Accept: 1368 Submit: 4639Time Limit: 1000 mSec Memory Limit : 32 ...
- bzoj 3111 蚂蚁 动态规划
题目描述 在一个 n*m 的棋盘上,每个格子有一个权值,初始时,在某个格子的顶点处一只面朝北的蚂蚁,我们只知道它的行走路线是如何转弯,却不知道每次转弯前走了多长. 蚂蚁转弯是有一定特点的,即它的转弯序 ...
- 7月12号day4总结
今天学习过程和总结 封装JDBC在src/main/java下com.neuedu下utils建立JDBCUilt.java 进行封装,基于框架的开发要么继承父类要么实现接口 一个方法里只能有一个动态 ...
- 基于Windows Server 2008 R2的Failover Cluster
转载一下别人的文章吧,写的不错 基于Windows Server 2008 R2的Failover Cluster(故障转移群集)部署Sql Server 2008 AA(主主) 模式群集(第一部分) ...
- 组合数问题(NOIP2016)
原题传送门 这题啊. 裸的杨辉三角. 预处理杨辉三角和答案即可 下面贴代码 #include<iostream> #include<cstdio> #include<al ...
- 自定义topo文件解析
from mininet.topo import Topo from mininet.net import Mininet from mininet.util import dumpNodeConne ...