1. ?? 操作符
在JavaScript中,??运算符被称为nullish coalescing运算符(零合并操作符)。如果第一个参数不是null/undefined,这个运算符将返回第一个参数,否则,它将返回第二个参数。
null ?? 5 // => 5
3 ?? 5 // => 3
2. ??=操作符
??=又被称为逻辑空值赋值运算符
这个赋值操作符只有在当前值为空或未定义的情况下才会赋一个新的值。
var x = null
var y = 5
console.log( x ??= y ) // => 5
console.log( x = ( x ?? y )) // => 5
3. ?. 操作符
可选的链式操作符?. 允许开发人员读取深嵌在对象链中的属性值,而不必显式验证每个引用。当一个引用为空时,表达式停止计算并返回一个未定义的值。
var travelPlans = {
destination:'DC',
monday: {
location: 'National Mall',
budget: 200
}
};
const tuesdayPlans = travelPlans.tuesday ?. location;
console.log( tuesdayPlans ) // => undefined
4. ? 操作符
三元运算符 ? : 需要三个操作数,一个条件为真时要执行的表达式,以及一个条件为假时要执行的表达式。这个应该是最熟悉的了
function checkCharge( charge ) {
return ( charge > 0 ) ? 'Ready for use' : 'Needs to charge'
}
console.log( checkCharge( 20 ) ) // => 'Ready for use'
console.log( checkCharge( 0 ) ) // => 'Needs to charge'
三元运算符也可以用于变量赋值
var budget = 0
var transportion = ( budget > 0 ) ? 'Train' : 'Walking'
console.log( transportion ) // => 'Walking'
我们甚至可以用它来复制nullish赋值的行为。
var x = 6
var x = ( x !== null || x !== undefined ) ? x : 3
console.log( x ) // => 6