ES6让代码简洁化

一、ES6 从 2015 年之后已经成为新的语言标准

function secret (message) {
    return function () {
        return message;
    }
};

可以简写为:

const secret = msg => () => msg;

小结:很简单的例子,只是利用了ES6中箭头函数的语法

二、point-free-style是函数编程里面的概念,常见方式:函数科里化,函数组合。不好记的概念,看了例子就会明白

函数科里化 例子:

var add = a => b => a+b;
var inc = add(5);
console.log(inc(4));

结果:9

一般是这样写:

var add = function(a){
    return function(b){
        return a+b;
    }
}

小结:编码风格看起来更简单,更容易理解

函数组合 例子:
需求:给定输入,先对其 +1,再对结果 x2

如果按照一般的写法,

const g = a => a+1;
const f = a => a*2;
const increment = n => {
      const incremented = g(n);
       return f(incremented);
};
console.log(increment(2)); 

结果:6

使用函数组合写法 (复合函数) :

const g = a => a+1;
const f = a => a*2;
const increment = a => b => f(g(b));
const inc = increment();
console.log(inc(2)); 

结果:6

三、也可以把参数封装成可遍历的数组,然后使用 map 或者 Promise 的 then 实现链式调用:
使用map:

const g = a => a+1;
const f = a => a*2;
const increment = (g,f) => x => [x].map(g).map(f).pop();
const inc = increment(g,f);
console.log(inc(2)); 

结果:6

Promise 的 then链式调用:

const g = a => a+1;
const f = a => a*2;

const increment = (g,f) => x => 
new Promise(function(resolve){
        resolve(x);
})
.then( data => Promise.resolve(g(data)) )
.then( data => Promise.resolve(f(data)) ).then( data => console.log(data) );

const inc = increment(g,f);

inc(2);

结果:6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值