ES6函数简写及思考

作者: F_wind | 来源:发表于2019-09-26 16:43 被阅读0次
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简写的过程,就是非常有趣并且优美的。但是这个过程很偶然,首先,你得初步了解过这个技术,然后,在一个被动的机会下,你静下心来,认真的体会技术带来的愉悦感,并真正的掌握这项技能。这似乎需要一个积累的过程,大量阅读以后再反复推敲,然后在这个过程中,自我成长,体会技术的真谛,并且使自己快乐!

相关文章

  • ES6函数简写及思考

    ES6 函数简化及一些思考 初闻 一次,一个同事在群里问,有谁知道这个函数该如何用ES6的方式简写: 我当时也没动...

  • 函数新特性

    ES6函数作为对象方法的简写方式:

  • ES6中对象新增了哪些扩展?

    一、属性的简写 ES6中,当对象键名与对应值名相等的时候,可以进行简写 方法也能够进行简写 在函数内作为返回值,也...

  • ES6中对象新增扩展

    一、属性的简写 ES6中,当对象键名与对应值名相等的时候,可以进行简写 方法也能够进行简写 在函数内作为返回值,也...

  • 对象扩展

    ES6 允许直接写入变量和函数,作为对象的属性和方法 属性简写 方法简写 某个方法的值是一个 Generator ...

  • ES6对象的扩展

    ES6 允许 直接写入变量和函数作为对象的属性和方法。 1、对象属性的简写 2、对象方法的简写 3、Object....

  • 箭头函数

    1,箭头函数定义 2,Es6 中箭头函数参数与返回值简写 补充 3,箭头函数中 this 指向 注:箭头函数中的t...

  • es6箭头函数中的this的区别

    箭头函数函数看上去只是es6对匿名函数的简写,其实箭头函数和匿名函数有明显区别 普通方式定义的函数可参考我之前整理...

  • 箭头函数的讲解

    箭头函数是es6的一种函数的简写方法。 如下: 从例子我们可以看出,省略了function,花括号‘{}’用‘=>...

  • ES6箭头函数及函数身上新增的东西

    为了更方便的书写和使用函数,ES6最重要点的是引入了箭头函数, 允许使用=>来定义函数,箭头函数是一种简写的函数表...

网友评论

    本文标题:ES6函数简写及思考

    本文链接:https://www.haomeiwen.com/subject/melnuctx.html