本篇文章给大家分享一位leader的十点关于ES6的吐槽, 并对应补充一些相关知识, 希望对大家有所帮助!
文章插图
“你会用ES6, 那倒是用啊!”:这是一位leader在一次代码评审会对小组成员发出的“怒吼”, 原因是在代码评审中发现很多地方还是采用ES5的写法, 也不是说用ES5写法不行, 会有BUG, 只是造成代码量增多, 可读性变差而已 。
恰好, 这位leader有代码洁癖, 面对3~5年经验的成员, 还写这种水平的代码, 极为不满, 不断对代码进行吐槽 。 不过对于他的吐槽, 我感觉还是有很大收获的, 故就把leader的吐槽记录下来, 分享给掘友们, 觉得有收获点个赞, 有错误的或者更好的写法, 非常欢迎在评论中留言 。 【相关推荐:javascript学习教程】
ps:ES5之后的JS语法统称ES6!!!
一、关于取值的吐槽
取值在程序中非常常见, 比如从对象
obj
中取值 。 const obj = { a:1, b:2, c:3, d:4, e:5,}吐槽:
const a = obj.a;const b = obj.b;const c = obj.c;const d = obj.d;const e = obj.e;或者
const f = obj.a + obj.d;const g = obj.c + obj.e;吐槽:“不会用ES6的解构赋值来取值吗?5行代码用1行代码搞定不香吗?直接用对象名加属性名去取值, 要是对象名短还好, 很长呢?搞得代码中到处都是这个对象名 。 ”
改进:
const {a,b,c,d,e} = obj;const f = a + d;const g = c + e;反驳
不是不用ES6的解构赋值, 而是服务端返回的数据对象中的属性名不是我想要的, 这样取值, 不是还得重新创建个遍历赋值 。
吐槽
看来你对ES6的解构赋值掌握的还是不够彻底 。 如果想创建的变量名和对象的属性名不一致, 可以这么写:
const {a:a1} = obj;console.log(a1);// 1补充
ES6的解构赋值虽然好用 。 但是要注意解构的对象不能为
undefined
、null
。 否则会报错, 故要给被解构的对象一个默认值 。 const {a,b,c,d,e} = obj || {};二、关于合并数据的吐槽
比如合并两个数组, 合并两个对象 。
const a = [1,2,3];const b = [1,5,6];const c = a.concat(b);//[1,2,3,1,5,6]const obj1 = { a:1,}const obj2 = { b:1,}const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}吐槽
ES6的扩展运算符是不是忘记了, 还有数组的合并不考虑去重吗?
改进
const a = [1,2,3];const b = [1,5,6];const c = [...new Set([...a,...b])];//[1,2,3,5,6]const obj1 = { a:1,}const obj2 = { b:1,}const obj = {...obj1,...obj2};//{a:1,b:1}三、关于拼接字符串的吐槽
const name = '小明';const score = 59;let result = '';if(score > 60){ result = `${name}的考试成绩及格`; }else{ result = `${name}的考试成绩不及格`; }吐槽
像你们这样用ES6字符串模板, 还不如不用, 你们根本不清楚在
${}
中可以做什么操作 。 在${}
中可以放入任意的JavaScript表达式, 可以进行运算, 以及引用对象属性 。 改进
【你说你会用ES6,那赶紧用上啊!】const name = '小明';const score = 59;const result = `${name}${score > 60?'的考试成绩及格':'的考试成绩不及格'}`;四、关于if中判断条件的吐槽
if( type == 1 || type == 2 || type == 3 || type == 4 ||){ //...}吐槽
ES6中数组实例方法
includes
会不会使用呢? 改进
const condition = [1,2,3,4];if( condition.includes(type) ){ //...}五、关于列表搜索的吐槽
在项目中, 一些没分页的列表的搜索功能由前端来实现, 搜索一般分为精确搜索和模糊搜索 。 搜索也要叫过滤, 一般用
filter
来实现 。 const a = [1,2,3,4,5];const result = a.filter( item =>{ return item === 3 })吐槽
如果是精确搜索不会用ES6中的
find
吗?性能优化懂么, find
方法中找到符合条件的项, 就不会继续遍历数组 。 改进
const a = [1,2,3,4,5];const result = a.find( item =>{ return item === 3 })六、关于扁平化数组的吐槽
一个部门JSON数据中, 属性名是部门id, 属性值是个部门成员id数组集合, 现在要把有部门的成员id都提取到一个数组集合中 。
const deps = {'采购部':[1,2,3],'人事部':[5,8,12],'行政部':[5,14,79],'运输部':[3,64,105],}let member = [];for (let item in deps){ const value = https://www.52zixue.com/zhanzhang/webqd/js/04/13/69691/deps[item]; if(Array.isArray(value)){ member = [...member,...value] }}member = [...new Set(member)]
推荐阅读
- 送你这句话 帮你免去一种病
- 再不容易也要养成的生活习惯 可能改变你的整个人生
- 保护好你的六根 长寿也就是自然而然的事情
- 九种体质特征一览表 快来看看您属于哪种体质
- Win7打印机服务怎么开启 Win7开启打印机服务的设置的两种方法猜你喜欢的
- 为什么使用IE浏览器打开网上银行时网页会自动关闭?小编教你电脑办公必备
- 最简单的工资表是什么样子的?小编教你[技能提升]
- 微信忘记密码怎么办?小编教你微信密码找回方法图解新系统了解的东西
- 多米音乐怎么注册账号?小编教你[推荐]
- 如何删除bing工具栏?小编教你[技能提升]