“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第5篇文章,点击查看活动详情”
场景
- 当我们完成一个类似于 “给每个数据增加 1 ”的需求的时候,我们有两种解决办法。
- 使用指令式的方式,比如
const arr = [1, 3, 4, 2, 12]
for(let i = 0; i < arr.length; i ++) {
arr[i] += 1
}
console.log(arr) // [ 2, 4, 5, 3, 13 ]
- 使用高阶函数的方法
let arr = [1, 3, 4, 2, 12]
let arr1 = arr.map((item) => {
return item + 1
})
console.log(arr1)
为什么说,链式的高阶函数更优雅?
- 首先,让我们来分析一下指令时的写法。
前置知识:使用指令式的写法可能会让我们的性能得到提升,但会给我们带来极大的心智负担。
如果你的写法并非最佳实践,那将会赔了夫人又折兵。非但得不到性能的提升,还给自己带来了大麻烦。
细说一下for/while的心智负担
当我们以“指令式”的方法做事时,我们将会创造大量的中间变量,这些中间变量仅仅在这一个指令式的循环里面存在意义,这就会增加我们理解代码的复杂度,降低代码的可读性。
这就是我们写代码时所遇到的一大陷阱,为了可以的性能提升而牺牲掉代码简略的机会。
- 再来看看高阶函数。
首先,我们写起来很简单,基本在一行内就可以完成我们想要的功能,如果有细致的功能划分,我们还可以根据高阶函数的特性进行选择,比如过滤数据使用
filter、映射数据使用map等等除此之外,我们省去了中间繁多的变量,使得这个过程对于coder来说更易于理解,可读性大大提高!
综上
如果没有明显的性能差异,尽量使用链式的高阶函数(map, filter, find, findIndex, some等) 来代替传统的循环语句。
如果这篇文章有给你一些启发,能给我一个赞嘛~~~