浅谈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 IE 浏览器判定代码
Mar 21 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
Egret引擎开发指南之运行项目
Sep 03 Javascript
javascript检测浏览器的缩放状态实现代码
Sep 28 Javascript
JavaScript插件化开发教程(五)
Feb 01 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
Jun 24 Javascript
详解react如何在组件中获取路由参数
Jun 15 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
javascript+Canvas实现画板功能
Jun 23 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(3) php 函数
2010/02/15 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
浅谈Python基础—判断和循环
2019/03/22 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
播音主持女孩的自我评价分享
2013/11/20 职场文书
房地产还款计划书
2014/01/10 职场文书
素质拓展感言
2014/01/29 职场文书
质量承诺书格式
2014/05/20 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2014年统战工作总结
2014/12/09 职场文书
小学中队长竞选稿
2015/11/20 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
浅析InnoDB索引结构
2021/04/05 MySQL
用Python爬取某乎手机APP数据
2021/06/15 Python