范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

你会用ES6,那倒是用啊

  不是标题党,这是一位leader在一次代码评审会对小组成员发出的"怒吼",原因是在代码评审中发现很多地方还是采用ES5的写法,也不是说用ES5写法不行,会有BUG,只是造成代码量增多,可读性变差而已。
  文章转载:乐字节
  恰好,这位leader有代码洁癖,面对3~5年经验的成员,还写这种水平的代码,极为不满,不断对代码进行吐槽。不过对于他的吐槽,我感觉还是有很大收获的,故就把leader的吐槽记录下来,分享给掘友们,觉得有收获点个赞,有错误的或者更好的写法,非常欢迎在评论中留言。
  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 obj1 = {   b:1, } const obj = Object.assgin({}, 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; const result = ""; if(score > 60){   result = `${name}的考试成绩及格`;  }else{   result = `${name}的考试成绩不及格`;  }
  吐槽
  像你们这样用ES6字符串模板,还不如不用,你们根本不清楚在${}中可以做什么操作。在${}中可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。
  改进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 = deps[item];     if(Array.isArray(value)){         member = [...member,...value]     } } member = [...new Set(member)]
  吐槽
  获取对象的全部属性值还要遍历吗?Object.values忘记了吗?还有涉及到数组的扁平化处理,为啥不用ES6提供的flat方法呢,还好这次的数组的深度最多只到2维,还要是遇到4维、5维深度的数组,是不是得循环嵌套循环来扁平化?
  改进const deps = {     "采购部":[1,2,3],     "人事部":[5,8,12],     "行政部":[5,14,79],     "运输部":[3,64,105], } let member = Object.values(deps).flat(Infinity);
  其中使用Infinity作为flat的参数,使得无需知道被扁平化的数组的维度。
  补充
  flat方法不支持IE浏览器。七、关于获取对象属性值的吐槽const name = obj && obj.name;
  吐槽
  ES6中的可选链操作符会使用么?
  改进const name = obj?.name;八、关于添加对象属性的吐槽
  当给对象添加属性时,如果属性名是动态变化的,该怎么处理。let obj = {}; let index = 1; let key = `topic${index}`; obj[key] = "话题内容";
  吐槽
  为何要额外创建一个变量。不知道ES6中的对象属性名是可以用表达式吗?
  改进let obj = {}; let index = 1; obj[`topic${index}`] = "话题内容";九、关于输入框非空的判断
  在处理输入框相关业务时,往往会判断输入框未输入值的场景。if(value !== null && value !== undefined && value !== ""){     //... }
  吐槽
  ES6中新出的空值合并运算符了解过吗,要写那么多条件吗?if(value??"" !== ""){   //... }十、关于异步函数的吐槽
  异步函数很常见,经常是用 Promise 来实现。const fn1 = () =>{   return new Promise((resolve, reject) => {     setTimeout(() => {       resolve(1);     }, 300);   }); } const fn2 = () =>{   return new Promise((resolve, reject) => {     setTimeout(() => {       resolve(2);     }, 600);   }); } const fn = () =>{    fn1().then(res1 =>{       console.log(res1);// 1       fn2().then(res2 =>{         console.log(res2)       })    }) }
  吐槽
  如果这样调用异步函数,不怕形成地狱回调啊!
  改进const fn = async () =>{   const res1 = await fn1();   const res2 = await fn2();   console.log(res1);// 1   console.log(res2);// 2 }
  补充
  但是要做并发请求时,还是要用到Promise.all()。const fn = () =>{    Promise.all([fn1(),fn2()]).then(res =>{        console.log(res);// [1,2]    })  }
  如果并发请求时,只要其中一个异步函数处理完成,就返回结果,要用到Promise.race()。十一、后续
  欢迎来对以上十点leader的吐槽进行反驳,你的反驳如果有道理的,下次代码评审会上,我替你反驳。
  此外以上的整理内容有误的地方,欢迎在评论中指正,万分感谢。
  如果你还有其它想吐槽的,也非常欢迎在评论中留下你的吐槽。
  读完有帮助,不妨关注一下,点个赞支持一下。
  文章转载:乐字节
  Java编程交流裙:785794074 暗号:75

智能家居如何实现能源管理?1智能插座系统通过智能插座系统,可实时监测每个区域的插座用电情况,一旦有突发情况,如插座漏电短路过载过压等故障,系统将第一时间断电,并通过语音或手机定位报警,我们可直接找到故障的设从泰国原产地到中国餐桌,水果之王之十二时辰盛夏将至,也是大量水果成熟的季节,市场上大批量应季水果都陆续上架,水果们都散发出诱人的果色果香来迎接人们舌尖的洗礼。但有一种水果除外,满身带刺的铠甲写满了拒绝靠近,散发出自身刺鼻的智能还是智障?智能家居配置率达84。2,体验感却如此差强人意?据IDC发布的数据统计,2020年我国智能家居的配置率较2019年增加15。1,达到84。2。而Statista给出的数据显示,国内智能家居市场的规模逐年递增,2020年已经达到4一个感谢电话的背后是德邦快递小哥优质服务的见证在每个城市的大街小巷,都有着许多平凡的面孔和温暖人心的故事。他们或助人为乐,孝老爱亲,或敬业奉献,诚实守信。他们用平凡的身躯做着不平凡的事,让这个社会更加美好和谐。近日,德邦快递相国产文化IP备受追捧,文化产权保护进入新阶段近年来,随着大众对于传统文化的热情高涨,国潮产品传统艺术品以新的面孔走进人们的生活,传统文化的创新成为一种新的潮流。与此同时,文化产品的版权问题也愈加受到人们的重视。在最近的文昌星凝心聚力,牢记使命德邦快递推动党建与经营深度融合今年是中国共产党建党100周年,在全党上下开展党史学习教育之际,近期,安徽邮政快递业党史学习教育基地揭牌暨走邮路看安徽主题宣传活动启动仪式在六安市金寨县汤家汇镇赤色邮局广场圆满举行毛铺和文化录不同时代造就不同思想,却都与和字默契碰撞孙子兵法有云凡战者,以正合,以奇胜。万通集团董事长冯仑也常引用这句话。对于有商界思想家美誉的冯仑而言,守正出奇则代表正道而行守法经营突破思维出奇制胜。即用百分之七十的时间去想正的事长城汽车55超级航母阵容为上海车展带来无数看点第十九届上海国际车展在上海国家会展中心已落下帷幕,长城汽车作为全球领先的自动驾驶与汽车智能化企业,本次55超级航母阵容震撼上海车展,55超级航母阵容包括哈弗长城皮卡WEY欧拉坦克五奢侈品打假挑战赛,AI技术1秒识别20个假大牌?也忒猛了如果要不是世界奢侈品教父奢侈品巨头LVMH集团的CEO贝尔纳阿尔诺,以1863亿美元的身价冲顶世界首富或许很多人都永远不会意识到,一个做奢侈品的竟比互联网大鳄们还要赚钱。在全世界范见义勇为是常态德邦快递鼓励好人好事彰显正能量视频加载中见义勇为是中华民族的传统美德,在人们的日常生活中,经常会遇到见义勇为的人和事。在危机时刻,很多人挺身而出,尽自己的微薄之力,救人于困境,彰显社会正能量。他们的出现让人们的国货当自强!这位大妈唱出了国人的心声有的人崇洋媚外,不知道国货厉害,花着存了半年的钱,买了个编织袋。来到一家餐厅,餐具都很用心,仔细一看他居然在痰盂里放冰。近日,一段大妈撑国货挺中国的数来宝RAP火爆网络。视频加载中
谁说便宜没好货?网友千元机又如何?千元机一样能够独当一面要是现在说起千元机,大家心中的第一个想法都是什么呢?相信屏幕前的不少朋友,应该都只有一个想法,那就是够用吧?确实,毕竟这手机就是一分钱一分货,在之前的很长一段时间里。千元机不要说是号称率先实现量产的L4级无人驾驶SUV,真有宣传那么厉害?自从新的广告法实施以后,车企为自己产品做宣传的时候也变得很小心,像最首个第一等关键词都得很谨慎地用,否则一不小心就会踩雷。但威马这回却很有自信地给W6冠以国内首款无人驾驶量产车型的iQOO放出大招Neo5活力版价格一出,有点香是怎么回事?就在近日,iQOO官方正式官宣了iQOONeo5活力版,很多人迫不及待的想知道这款手机的一些配置信息,我们先一起来看看吧!首先是屏幕方面,iQOONeo5活力版搭载了6。57英寸2华为鸿蒙OS系统将于6月2日发布,开源的情况下其他手机愿意使用吗最近华为也算是终于官宣了华为鸿蒙HarmonyOS手机系统的发布时间,表示将于6月2日晚上8点举行线上发布会,到时候也将可以见到更完全体的HarmonyOS了。在之前很多像智慧屏和预定本年度最佳安卓平板?骁龙870OLED屏幕,2499元这价格太香如果说去年谁是最值得购买的安卓平板,那么我们会推荐联想的小新PadPro这款产品。尽管骁龙730G的芯片性能一般,但是OLED屏幕以及JBL调教的喇叭加持使得这款产品在影音效果上的2021Q1全球手机行业营收排行,iPhone12系列是赢家根据市场调查机构最新报告,全球智能手机行业在2021年Q1的利润突破了1000亿美元。受开售日期推迟的影响,苹果iPhone12系列不仅是Q1最畅销系列,iPhone12ProMaiOS15将于6月份公布,12个更新内容提前了解一下大家好,又见面了,我是专注手机回收的换换君苹果正式官宣了今年WWDC的日程安排,其中最受普通用户关注的主题演讲将于北京时间6月8日凌晨1点召开,届时苹果将展示新一代的操作系统,包括浙江家长起诉微信视频号,要求完善青少年模式杭州网讯(记者林舒然)新未成年人保护法即将实施,网络短视频产品应如何加强对青少年的保护?5月26日,浙江律师林华爽向杭州互联网法院提起民事诉讼,主张深圳市腾讯计算机系统有限公司(下华为新SOC首曝?麒麟985即将来袭,7nmEUV设计,简直无敌了!北京时间3月26日晚上九点,华为正式发布了2019年上半年的旗舰手机华为P30P30Pro两款新机。P30系列手机采用水滴屏设计,均搭载华为自家旗舰处理器麒麟980。这颗由台积电T中兴通讯巨亏70亿,5G能否撑起他的未来?文杨剑勇中兴通讯2018年营收同比下降21。41至855亿元,利润亏损高达69。8亿元。当然,造成去年巨额主要来自10亿美元罚款以及导致的经营损失预提损失所致。去年风波让中兴通讯陷长城入股全球领先加氢站,首款氢燃料车将于明年亮相,能成功吗?新能源是一个全球性的发展趋势,目前处于起步阶段,未来充满了很多不确定性。纯电动车氢燃料车太阳能车等都属于新能源车,谁能成为主流,目前确实不好预测。每种新能源车都存在这样那样的问题,