之间的区别??和||
Difference between ?? and ||
我正在研究 ES2020 中提议的新功能,我偶然发现了 ??运算符也称为“无效合并运算符”。
解释含糊不清,我仍然不明白它与逻辑 OR 运算符有何不同 (||
)
解释很简单让我们假设我们有下一种情况,如果它存在于对象中,我们想要获取一个值,或者如果它是未定义的或空的,我们想要使用其他值
const obj = { a: 0 };
const a = obj.a || 10; // gives us 10
// if we will use ?? operator situation will be different
const obj = { a: 0 };
const a = obj.a ?? 10; // gives us 0
// you can achieve this using this way
const obj = { a: 0 };
const a = obj.a === undefined ? 10 : obj.a; // gives us 0
// it also work in case of null
const obj = { a: 0, b: null };
const b = obj.b ?? 10; // gives us 10
基本上这个运算符接下来会做:
// I assume that we have value and different_value variables
const a = (value === null || value === undefined) ? different_value : value;
您可以在 MDN web docs
中找到更多相关信息
我正在研究 ES2020 中提议的新功能,我偶然发现了 ??运算符也称为“无效合并运算符”。
解释含糊不清,我仍然不明白它与逻辑 OR 运算符有何不同 (||
)
解释很简单让我们假设我们有下一种情况,如果它存在于对象中,我们想要获取一个值,或者如果它是未定义的或空的,我们想要使用其他值
const obj = { a: 0 };
const a = obj.a || 10; // gives us 10
// if we will use ?? operator situation will be different
const obj = { a: 0 };
const a = obj.a ?? 10; // gives us 0
// you can achieve this using this way
const obj = { a: 0 };
const a = obj.a === undefined ? 10 : obj.a; // gives us 0
// it also work in case of null
const obj = { a: 0, b: null };
const b = obj.b ?? 10; // gives us 10
基本上这个运算符接下来会做:
// I assume that we have value and different_value variables
const a = (value === null || value === undefined) ? different_value : value;
您可以在 MDN web docs
中找到更多相关信息