浅谈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 相关文章推荐
js 解决“options为空或不是对象”
Dec 22 Javascript
jQuery浏览器CSS3特写兼容实例
Jan 19 Javascript
JavaScript仿静态分页实现方法
Aug 04 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
js实现索引图片切换效果
Nov 21 Javascript
Vee-Validate的使用方法详解
Sep 22 Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 Javascript
vue中使用rem布局代码详解
Oct 30 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
JavaScript多种图形实现代码实例
Jun 28 Javascript
利用node.js开发cli的完整步骤
Dec 29 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
dedecms中常见问题修改方法总结
2007/03/21 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
激活 ActiveX 控件
2006/10/09 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
python__new__内置静态方法使用解析
2020/01/07 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
快餐公司创业计划书
2014/04/29 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
学习党代会心得体会
2014/09/05 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
二审代理词范文
2015/05/25 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书