浅谈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 相关文章推荐
JavaScript的面向对象(一)
Nov 09 Javascript
jquery 表单进行客户端验证demo
Aug 24 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
javascript之IE版本检测超简单方法
Aug 20 Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
一文读懂ES7中的javascript修饰器
May 06 Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
微信小程序自定义底部弹出框功能
Nov 18 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
PHP生成器简单实例
2015/05/13 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
Python collections模块实例讲解
2014/04/07 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python+Wordpress制作小说站
2017/04/14 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
专科毕业生学习生活的自我评价
2013/10/26 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
土地租赁意向书
2014/07/30 职场文书
招标授权委托书样本
2014/09/23 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技