让前端飞Web前端之路小码农养成记

ES6函数简写及思考

2019-09-26  本文已影响0人  F_wind
ES6函数简写及思考.jpeg

ES6 函数简化及一些思考

初闻

一次,一个同事在群里问,有谁知道这个函数该如何用ES6的方式简写:

function fn(n){
 return function(m){
  return m+n
 }
}

我当时也没动脑子,直接按潜意识改了一下,发出去了:

fn=(n)=>{
 return (m)=>{
  return m+n
 }
}

果然,发code的那家伙神秘一笑,说你再继续简化一下试试。我后背一凉,赶紧又看了看,改成这个样子又抛出去了:

fn=(n)=>(m)=>{
  return m+n
}

我自认为这种总该差不多了吧,结果又被生生打脸。题主笑而不语,然后我恍然大悟,看来之前真是自以为会用,根本没有认真思考过,其实还可以进一步简化:

fn=(n)=>(m)=> m+n

最后题主说,把括弧也去了吧:

fn = n => m => m + n

看着这段code,我沉默了……原来code可以如此简洁、优美、易懂。

偶遇

上面的故事发生没多久以后,我在看一个帖子时,发现如下code:

var arr = [
            { name:"小明", age:12 },
            { name:"小红", age:11 },
            { name:"小刚", age:15 },
            { name:"小华", age:13 }
];
function compare(p) { //这是比较函数
    return function (m, n) {
        var a = m[p];
        var b = n[p];
        return a - b; //升序
    }
}
arr.sort(compares("age"));
console.log(arr);

然后我笑了,在评论区默默地留下了compares函数的简版:

compare = p => (m, n) => m[p] - n[p]

思考

Coding这么多年,其实大部分时间是比较麻木的,不走脑子的reading、copy以及coding,糊弄完了一个又一个项目。随着时光的飞逝,真正有意义的东西很少能留下来,所谓很少,其实还是有的,要不真该转行了,就比如这个ES6简写的过程,就是非常有趣并且优美的。但是这个过程很偶然,首先,你得初步了解过这个技术,然后,在一个被动的机会下,你静下心来,认真的体会技术带来的愉悦感,并真正的掌握这项技能。这似乎需要一个积累的过程,大量阅读以后再反复推敲,然后在这个过程中,自我成长,体会技术的真谛,并且使自己快乐!

上一篇下一篇

猜你喜欢

热点阅读