浅谈javascript函数式编程
作者:bea
函数式编程,属于编程范式的一种 1 函数是第一公民,可以返回值,也可以作为其他函数的参数 //console是一个函数function con(v){ console.log(v)}// execute 也是一个函数function execute(fn){ fn(1)}//将con函数作为参数传进execute函数execute(con) // 1 2 接近自然语言的写法 晓池吃完饭然后就去洗澡 可以表现为eat().bathe() // 吃饭函数functio
函数式编程,属于编程范式的一种
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 中,这两者得到了良好的结合,代码不但可以非常简单,优美,而且更易于调试。
有用 | 无用
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 中,这两者得到了良好的结合,代码不但可以非常简单,优美,而且更易于调试。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- 基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
- js实现鼠标点击左上角滑动菜单效果代码
- jQuery横向擦除焦点图特效代码分享
- 利用HTML5的画布Canvas实现刮刮卡效果
- JS实现鼠标滑过折叠与展开菜单效果代码
- jQuery实现美观的多级动画效果菜单代码
- jquery实现美观的导航菜单鼠标提示特效代码
- 基于Flowplayer打造一款免费的WEB视频播放器附源码
- jquery京东商城双11焦点图多图广告特效代码分享
- javascript日期处理函数,性能优化批处理
- js实现改进的仿蓝色论坛导航菜单效果代码
- 配置Grunt的Task时通配符支持和动态生成文件名问题
- 基于jquery实现的树形菜单效果代码
- jQuery.extend 函数及用法详细
- jquery动态导航插件dynamicNav用法实例分析
- jquery实现可自动收缩的TAB网页选项卡代码
- jquery实现初次打开有动画效果的网页TAB切换代码
- js实现简洁的TAB滑动门效果代码
- js实现左侧网页tab滑动门效果代码