浅谈javascript函数式编程


Posted in Javascript onSeptember 06, 2015

函数式编程,属于编程范式的一种

1 函数是第一公民,可以返回值,也可以作为其他函数的参数

//console是一个函数
function con(v){
 console.log(v)
}
// execute 也是一个函数
function execute(fn){
 fn(1)
}
//将con函数作为参数传进execute函数
execute(con) // 1

2 接近自然语言的写法

  晓池吃完饭然后就去洗澡 可以表现为eat().bathe()

// 吃饭函数
function eat(eat){
 this.e = eat;
 return this;
}
// 洗澡函数
function bathe(bathe){
 this.b = bathe;
 return this;
}

var person = eat("晓池在吃饭").bathe("晓池去洗澡了");
console.log(person.e) // 晓池在吃饭
console.log(person.b) // 晓池去洗澡了

 3 函数式编程的特性

  匿名函数,即没有名字的函数,在函数式编程中很常见,有时候我们需要通过它(不复用的函数)来完成部分功能,下面我们通过定义一个each函数来了解一下:

// 自定义each函数
function each(arr,func){
 var length = arr.length;
 for(var i = 0 ;i <length; i++){
  func(i,arr[i])
 }
}
// 执行each函数,传进一个匿名函数作为该函数的参数
each([1,2,3],function(i,v){
 console.log('key:' + i + ',value:' +v);
});
//输出内容
//key:0,value:1
//key:1,value:2
//key:2,value:3

 柯里化:柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术

//定义add函数,并返回一个函数
function add(num){
 return function(x){
   return num + x;
 }
}
add1 = add(1)
console.log(add1(3)) // 4

高阶函数:有函数作为参数或函数内部返回一个函数,都可称该函数为高阶函数 ,以上的each函数即算是高阶函数的一种。

结束语

实际的应用中,不会囿于函数式或者面向对象,通常是两者混合使用,事实上,很多主流的面向对象语言都在不断的完善自己,比如加入一些函数式编程语言的特征等,JavaScript 中,这两者得到了良好的结合,代码不但可以非常简单,优美,而且更易于调试。

Javascript 相关文章推荐
一些mootools的学习资源
Feb 07 Javascript
JavaScript常用全局属性与方法记录积累
Jul 03 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
浅谈JS中的常用选择器及属性、方法的调用
Jul 28 Javascript
JavaScript变量类型以及变量作用域详解
Aug 14 Javascript
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
详细分析vue响应式原理
Jun 22 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 #Javascript
Javascript实现快速排序(Quicksort)的算法详解
Sep 06 #Javascript
简单谈谈javascript Date类型
Sep 06 #Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 #Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 #Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 #Javascript
javascript日期操作详解(脚本之家整理)
Sep 05 #Javascript
You might like
在普通HTTP上安全地传输密码
2007/07/21 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
劳资员岗位职责
2013/11/11 职场文书
党建工作先进材料
2014/05/02 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
贷款委托书怎么写
2014/08/02 职场文书
申报材料格式
2014/12/30 职场文书
自荐信格式模板
2015/03/27 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
员工安全责任协议书
2016/03/22 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书