持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
铃铛说点题外话
一句话前情回顾:箭头函数this指向外层作用域的this,箭头函数不能实例化,箭头函数没有arguments用扩展运算符代替
一句话介绍今天:高阶函数和函数柯里化
今天就要把箭头函数打下来
铃铛说正文
纯函数
我们可以将具有以下的条件的我们可以称作为纯函数
- 有相同的输入,就一定会有相同的输出
- 输出和输入的值以外的其他信息和状态无关,也和设备的摆布输出无关。
- 也不能有语义上的副作用,比如触发事件、使输出设备输出、或者更改输出值之外的内容等。
总结来说就是两点:
- 确定的输入,一定有确定的输出
- 函数在执行过程中,一定不能有副作用
举个例子
function sum(num1, num2) {
return num1 + num2
}
我们输入的一样的值,一定会得到一样的结果。sum这个函数我们就可以称为纯函数
var name = "abc"
function changeName(){
name = cba"
}
在changeName这个函数里面,会对全局的变量name进行改变,所以changeName不能被称为一个纯函数
函数柯里化
柯里化是指:
- 是把接收多个参数的函数,变成接收一个单一的参数的函数,并且返回接收余下参数,而且返回的结果是新函数的
- 柯里化声称如果你固定某些参数,你将得到接受余下参数的一个函数。
function foo(a, b, c, d) {
return a + b + c + d
}
console.log(foo(10,20,30,40));
- 柯里化后
function fn(a) {
return function(b) {
return function(c) {
return function(d) {
return a + b + c + d
}
}
}
}
console.log(fn(10)(20)(30)(40));
- 简化柯里化
var sum = x => y => z =>{
return x + y + z
}
console.log(sum(10)(20)(30));
跟铃铛说再见
学习的最后一步:放松
今日冷笑话:从前有个人钓鱼,钓到了只鱿鱼。鱿鱼求他:你放了我吧,别把我烤来吃啊。那个人说:好的,那么我来拷问你几个问题吧。鱿鱼很开心说:你考吧你考吧!然后这人就把鱿鱼给烤了..
放松结束,猜猜明天会说讲些什么吧