运算符

87 阅读1分钟

几种运算符的使用

const rest1 = {
  name: "小猪",
  numGuests: 0, //客人数量
};
​
const rest2 = {
  name: "小猫",
  owner: "朝阳", //主人
};

逻辑或赋值

old

//  如果客人数量为0,也要取0,不能取10,除非没有客人数量这个对象
rest1.numGuests = rest1.numGuests || 10;
rest2.numGuests = rest2.numGuests || 10;
console.log({ rest1 }); //rest1: {name: '小猪', numGuests: 10}
console.log({ rest2 }); //rest2: {name: '小猫', owner: '朝阳', numGuests: 10}

new

上面的那种形式也可以写成这样

// ||=  前面这个数据不能为false
rest1.numGuests ||= 10;
rest2.numGuests ||= 10;
console.log({ rest1 }); //rest1: {name: '小猪', numGuests: 10}
console.log({ rest2 }); //rest2: {name: '小猫', owner: '朝阳', numGuests: 10}

逻辑空赋值

??= 是 ||= 的替代品,当前这个数据不能为false的时候可以使用 ??=

// ??=   前面这个数据可以为false
rest1.numGuests ??= 10;
rest2.numGuests ??= 10;
console.log({ rest1 }); //rest1: {name: '小猪', numGuests: 0}
console.log({ rest2 }); //rest2: {name: '小猫', owner: '朝阳', numGuests: 10}

逻辑与赋值

old

//如果前面这个数据不存在的情况下,会出现把这个数据添加上默认值是undefined
rest1.owner = rest1.owner && "夕阳";
rest2.owner = rest2.owner && "夕阳";
console.log({ rest1 }); //rest1: {name: '小猪', numGuests: 0, owner: undefined}
console.log({ rest2 }); //rest2: {name: '小猫', owner: '夕阳'}

new

//  &&=
rest1.owner &&= "夕阳";
rest2.owner &&= "夕阳";
console.log({ rest1 }); //rest1: {name: '小猪', numGuests: 0}
console.log({ rest2 }); //rest2: {name: '小猫', owner: '夕阳'}

打印方式

old

rest1.owner &&= "夕阳";
rest2.owner &&= "夕阳";
console.log("rest1", rest1); //rest1 {name: '小猪', numGuests: 0}
console.log("rest2", rest2); //rest2 {name: '小猫', owner: '夕阳'}

new

{rest1} rest1:{name: "小猪",numGuests: 0},这个是我偶然之间看到某个掘金大佬写到,但是现在找不到是谁写的了

rest1.owner &&= "夕阳";
rest2.owner &&= "夕阳";
console.log({ rest1 }); //rest1: {name: '小猪', numGuests: 0}
console.log({ rest2 }); //rest2: {name: '小猫', owner: '夕阳'}