浅谈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 相关文章推荐
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 Javascript
js Canvas实现的日历时钟案例分享
Dec 25 Javascript
jQuery ajax的功能实现方法详解
Jan 06 Javascript
基于Vue的ajax公共方法(详解)
Jan 20 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
Sep 11 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
Apr 14 Javascript
深入详解JS函数的柯里化
Jun 09 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
PHP版单点登陆实现方案的实例
2016/11/17 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
PHP实现添加购物车功能
2017/03/06 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
学习python的前途 python挣钱
2019/02/27 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
在Python中实现字典反转案例
2020/12/05 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
澳大利亚网上书店:QBD
2021/01/09 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
什么是类的返射机制
2016/02/06 面试题
大学生学习党课思想汇报
2014/01/03 职场文书
学习党章思想汇报
2014/01/07 职场文书
网吧消防安全责任书
2014/07/29 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
暑假打工感想
2015/08/07 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书