前言
闭包多是用匿名函数实现,在匿名函数中引用了外部变量,那这个匿名函数就形成了闭包。匿名函数拥有可动态编程的执行过程。巧妙使用可以让你的代码简约而不失优雅,灵活而不失约束。好了,正式切入本文的正题,使用闭包函数优化思维,重构代码。
下面是三种场景中对闭包的使用
使用闭包遍历水果选择项
闭包的声明语法:(function(参数){}(值))
在声明的时候传值,该闭包函数会立即执行,例如下面代码中的fruitsItems函数。
筛选出年级小于并等于25岁的女性同事
筛选前
姓名:Winnie,年龄:25,性别:female
姓名:Jim,年龄:29,性别:male
姓名:Anson,年龄:27,性别:male
姓名:Danica,年龄:23,性别:female
筛选后
姓名:Winnie,年龄:25,性别:female
姓名:Danica,年龄:23,性别:female
实现一个数据处理过程的匿名函数重构
传入 5
执行成功返回 {status: ‘success’, data: 10}
执行失败返回 {status: ‘failed’, error: ‘xxx’}
传入 [2, 3]
执行成功返回 {status: ‘success’, data: [{status: ‘success’, data: 4}, {status: ‘success’, data: 6}]}
执行失败返回 {status: ‘success’, data: [{status: ‘failed’, error: ‘xxx’}, {status: ‘failed’, error: ‘xxx’}]}
普通js代码
代码冗余,相同的代码重复写,机械化。
重构后
execute 方法只管输入输出的格式和错误处理,包揽了所有脏活累活;multiple 方法则只关心业务的具体实现,也不用关心输入的是单个元素还是数组。如果要改乘 3,只要修改 multiple 方法最后一个 return。优秀!
结尾
本文练习总结结果源于阅读“微信公众号:前端早读课”的“【第1073期】巧用匿名函数重构你的代码”一文,进行自身场景的练习,转换成技能为我所用。
本文只做日常技术知识积累记录所用,侵删。