发表于: 2019-10-13 19:58:21
0 772
今日完成:
关于函数式编程,简要的谈谈你的看法
就我目前的水平,我尽量按照自己的理解去说,如有不足之处,还请指正!
个人理解有以下三点:
第一,函数式编程没有副作用,就是对已声明的变量没有影响,比如:
常用的编程思维是 var x=1;
function test(y){
x=x+y;
}
console.log(x)//此时显示的数据与初始的数据是不同的
而函数式编程是不会对声明的那个变量造成影响的
例如 var a=1;
function testone(b){
return a+b
}
console.log(a)
因为这个函数只负责输出一个值,而不参与赋值相关的东西,所以无论怎么变化,初始声明的值始终不会发生改变
这也突出了函数式编程的有点,不会对外部条件进行修改
第二,将函数进行组合嵌套,实现管道流,实现每次输入相同的数值时,都会返回相同的结果
例如:function add(x){
return ++x
}
function square(x){
return x*x
}
function compose(f,g){
return function(x){
return g(f(x))
}
}
var addThenSquare=compose(add,square)
这样的话,每次调用addThenSquare函数时,它都会返回一个值,同样的值,同样的结果,实现了将函数变为一个管道工具
第三,关于函数柯里化,对此我不怎么懂,甚至说联想不到相关的场景,一般的解释为:
函数柯里化指把接受多个参数的多参函数转换成每次只接受一个参数的单参函数,并且返回可以接受余下参数的新函数,
最大的特点是延迟执行,增加了函数的适用性。
例如: 常用的函数为 function add(x,y){
return x+y
}
add(1.2)
而柯里化后为: function add(x){
return function(y){
return x+y
}
}
var added=add(1)
added(2)
感觉柯里化之后,反而更加的麻烦了,这就是我不懂的地方,还请大佬指点
评论