浅谈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+数组实现网页上显示时间/星期几的实用方法
Jan 18 Javascript
JavaScript利用append添加元素报错的解决方法
Jul 01 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
May 18 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 Javascript
JS实现网页上随机产生超链接地址的方法
Nov 09 Javascript
jquery validate.js表单验证入门实例(附源码)
Nov 10 Javascript
jQuery层次选择器用法示例
Sep 09 Javascript
vue数据双向绑定原理解析(get &amp; set)
Mar 08 Javascript
bootstrap table使用入门基本用法
May 24 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 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产生随机字符串函数
2006/12/06 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
2013/06/05 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
js+html制作简单验证码
2017/02/16 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python实现百度语音识别api
2018/04/10 Python
python线程中同步锁详解
2018/04/27 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
工作评语大全
2014/04/26 职场文书
一分钟演讲稿
2014/04/30 职场文书
2014年中秋寄语
2014/08/11 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
五年级小学生评语
2014/12/26 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
组织委员竞选稿
2015/11/21 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB