一次,一个同事在群里问,有谁知道这个函数该如何用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简写的过程,就是非常有趣并且优美的。但是这个过程很偶然,首先,你得初步了解过这个技术,然后,在一个被动的机会下,你静下心来,认真的体会技术带来的愉悦感,并真正的掌握这项技能。这似乎需要一个积累的过程,大量阅读以后再反复推敲,然后在这个过程中,自我成长,体会技术的真谛,并且使自己快乐!
我理解的 JavaScript 函数式编程,都认为属于函数式编程的范畴,只要他们是以函数作为主要载体的。
给你的代码增加一点点函数式编程的特性,最近我对函数式编程非常感兴趣。这个概念让我着迷:应用数学来增强抽象性和强制纯粹性,以避免副作用,并实现代码的良好可复用性。同时,函数式编程非常复杂。
Async/await以及它底层promises的应用正在猛烈地冲击着JS的世界。在大多数客户端和JS服务端平台的支持下,回调编程已经成为过去的事情。当然,基于回调的编程很丑陋的。
如果你曾经了解或编写过JavaScript,你可能已经注意到定义函数的方法有两种。即便是对编程语言有更多经验的人也很难理解这些差异。在这篇博客的第一部分,我们将深入探讨函数声明和函数表达式之间的差异。
随着软件应用的复杂度不断上升,为了确保应用稳定且易拓展,代码质量就变的越来越重要。不幸的是,包括我在内的几乎每个开发者在职业生涯中都会面对质量很差的代码。这些代码通常有以下特征:
在js开发中,程序代码是从上而下一条线执行的,但有时候我们需要等待一个操作结束后,再进行下一步操作,这个时候就需要用到回调函数。 在js中,函数也是对象,确切地说:函数是用Function()构造函数创建的Function对象。
这篇文章主要介绍ES5中函数的4种调用,在ES5中函数内容的this指向和调用方法有关。以及ES6中函数的调用,使用箭头函数,其中箭头函数的this是和定义时有关和调用无关。
函数的三种定义方法分别是:函数定义语句、函数直接量表达式和Function()构造函数的方法,下面依次介绍这几种方法具体怎么实现,在实际编程中,Function()构造函数很少用到,前两中定义方法使用比较普遍。
微软 称excel就实现面向开发者的功能,也就是说我们不仅可以全新定义的公式,还可以重新定义excel的内置函数,现在Excel自定义函数增加了使用 JavaScript 编写的支持,下面就简单介绍下如何使用js来编写excel自定义函数。
这篇文章主要讲解:js立即执行函数是什么?js使用立即执行函数有什么作用呢?js立即执行函数的写法有哪些?
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!