你会用ES6的写法吗?

对于一名有代码强迫症和洁癖的程序员来说,你还在用ES5的写法吗?本人不是说ES5写法不行,只是代码的可读性比较差,而且看起来也比较冗余,接下来教大家最简洁的代码解决你的冗余问题。

一、关于对象的取值问题

例子:

const obj={ a:1, b:2 , c:3 , d:4 }

吐槽大会(取值):
const a = obj.a;
const b = obj.b;
const c = obj.c;
const d = obj.d;

不会用ES6的解构赋值取值吗?一行代码代替四行代码甚至更多不香吗?

改进方法:
const { a, b, c, d } = obj;

补充:
ES6的解构赋值固然好用。但是要注意解构对象不能为 undefined 或者 null ,否则会报错,故要给结构的对象一个默认值。

const { a, b, c, d } = obj  ||  { };

二:关于合并两个数组和两个对象的吐槽

例子:
1、数组

const a = [1,2,3];
const b = [1,5,6];
const c = a.concat(b);   //[1,2,3,1,5,6]

2、对象

const obj1 = {
  a:1,
}
const obj2 = {
  b:1,
}
const obj = Object.assign({}, obj1, obj2);  //{a:1,b:1}

吐槽大会:
ES6的扩展运算符,三个点是不是忘记了,还要数组合并不考虑去重吗?上面的例子如果有重复的属性,不会去重,想要得到去重后的数组和对象,还需再进一步处理。

改进:
1、数组

const a = [1,2,3];
const b = [1,5,6];
const c = [...new Set( [...a, ...b] )];     //[1,2,3,5,6]

2、对象
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字符串模板,还不如不用,你们根本不清楚在${}中可以做什么操作。

改进:

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) ){
   //...
}

五、关于异步函数的吐槽

例子:

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]
   }) 
}

还有一些ES6的写法,下次再跟大家补充,也随时欢迎大家在下方留言吐槽哦!
如果在分享中有问题,欢迎大家指正,万分感谢!
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值