【无标题】

let => const

// bad
let result = false;
if (userInfo.age > 30) {
  result = true;
}
//
// good
const result = userInfo.age > 30;

有条件地向对象添加属性

// 展开运算符来有条件地向对象中添加属性
const condition = true;
const person = {
  id: 1,
  name: "dby",
  ...(condition && { age: 12 }),
};

使用短路避免报错

解构赋值虽然好用,但是要注意解构的对象不能为 undefined 、null ,否则会报错,故要给被解构的对象一个默认值:

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

检查属性是否存在对象中

Object.hasOwn(person, "salary"); // true

遍历对象

用 Object.keys 或者 Object.entries 转 数组进行遍历,而且遍历的是自身属性,不会遍历到原型上。

Object.keys(obj).forEach(key => {
  // ...
})

Object.entries(obj).forEach(([key, val]) => {
  // ...
})

以上,使用 find 方法找到符合条件的项就不会继续遍历

Object.keys(obj).find(key => key === "name");

使用 includes 简化 if 判断

原始:

if (a === 1 || a === 2 || a === 3 || a === 4) {
    // ...
}

优化:

if ([1, 2, 3, 4].includes(a)) {
    // ...
}

空值合并运算符 ??

当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

var a = null;
var b = undefined;

var aa = a ?? 'xxx'
console.log(aa) // 'xxx'

var bb = b ?? 'yyy'
console.log(bb) // 'yyy'

初看和 || 很相像,请看当左值为 0 或 ‘’ 时的区别

var a = 0;
var b = '';

console.log(a ?? 'xxx') // 0
console.log(a || 'xxx') // xxx

console.log(b ?? 'yyy') // ''
console.log(b || 'yyy') // yyy

?? 只在左侧的操作数为 null 或者 undefined 时,返回右值,谨记。

利用解构,可为多个变量同时赋值

//Longhand
let a, b, c;

a = 5;
b = 8;
c = 12;

//Shorthand
let [a, b, c] = [5, 8, 12];

使用&&运算符简化if语句

//Longhand
if (isLoggedin) {
    goToHomepage();
 }

//Shorthand
isLoggedin && goToHomepage();

移除对象属性

let obj = {x: 45, y: 72, z: 68, p: 98};

// Longhand
delete obj.x;
delete obj.p;
console.log(obj); // {y: 72, z: 68}

// Shorthand
let {x, p, ...newObj} = obj;
console.log(newObj); // {y: 72, z: 68}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值