浅谈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 相关文章推荐
cnblogs csdn 代码运行框实现代码
Nov 02 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
Dec 08 Javascript
jQuery对table表格进行增删改查
Dec 22 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
个人小程序接入支付解决方案
May 23 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 Javascript
jQuery实现回到顶部效果
Oct 19 jQuery
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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php木马攻击防御之道
2008/03/24 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
php中socket的用法详解
2014/10/24 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
python实现定时发送qq消息
2019/01/18 Python
python打包成so文件过程解析
2019/09/28 Python
Python如何省略括号方法详解
2020/03/21 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
初中生学习的自我评价
2013/11/14 职场文书
品牌服务方案
2014/06/03 职场文书
生产车间标语
2014/06/11 职场文书
党支部活动策划方案
2014/08/18 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
离职报告范文
2014/11/04 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang