**
!! 用法:变量为真是进入
var a = 0;
if (a !== null && a !== "" && a !== undefined && a !== 0) {
//a有内容才执行的代码
}
if (!!a) {
//a有内容才执行的代码...
}
?? 用法:只有当左侧为null和undefined时,才会返回右侧的数
const foo = null ?? "右边"; // '右边'
console.log(foo);
const baz = 0 ?? 42; // '42'
console.log(baz);
const empty = "" ?? 42; // ''
console.log(empty);
?. 用法:可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。
let optional = {
name: "optional",
details: { age: 82 },
};
console.log(optional?.city ?? "可选链"); // '可选链'
if (optional?.name) {
console.log(optional?.name); // optional
}
// 用法
if (optional?.name?.age) {
console.log(optional?.details?.age); // 82
}
// 同等于
if (optional && optional.name && optional.details.age) {
// 82
console.log(optional.details.age);
}