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