浅谈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 相关文章推荐
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
JavaScript职责链模式概述
Sep 17 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
Oct 26 Javascript
jQuery实现 上升、下降、删除、添加一行代码
Mar 06 Javascript
bootstrap-table组合表头的实现方法
Sep 07 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 jQuery
jQuery实现评论模块
Aug 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
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
jquery选择器简述
2015/08/31 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
Python中编写ORM框架的入门指引
2015/04/29 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
django 外键创建注意事项说明
2020/05/20 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
四年级下册教学反思
2014/02/01 职场文书
保险经纪人求职信
2014/03/11 职场文书
致运动员加油稿
2015/07/21 职场文书
初中物理教学反思
2016/02/19 职场文书
python Polars库的使用简介
2021/04/21 Python
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers