js一个?跟??区别
时间: 2023-11-09 11:53:24 浏览: 31
在JavaScript中,一个?和??的区别如下:
- ?.是可选链操作符,它允许你在读取连接对象链深处的属性值时,无需逐个验证每个引用是否有效。如果引用为空(null或undefined),该表达式将直接返回undefined。
- ??是空值合并操作符,它用于判断前一个值是否为nullish(null或undefined),如果是,那么返回后面的值作为结果。如果前一个值不是nullish,那么返回前一个值。
举个例子来说明:
```
const obj = { a: { b: [{ name: 'obj' }] } };
console.log(obj?.a?.b?.[0]?.name); // 输出: "obj"
console.log(obj?.b?.c?.d); // 输出: undefined
console.log(undefined ?? 2); // 输出: 2
console.log(null ?? 2); // 输出: 2
console.log(0 ?? 2); // 输出: 0
console.log("" ?? 2); // 输出: ""
console.log(true ?? 2); // 输出: true
console.log(false ?? 2); // 输出: false
console.log(undefined || 2); // 输出: 2
console.log(null || 2); // 输出: 2
console.log(0 || 2); // 输出: 2
console.log("" || 2); // 输出: 2
console.log(true || 2); // 输出: true
console.log(false || 2); // 输出: 2
```