本文主要是介绍JS中两个吊炸天的操作符(?? 和 ?.),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天在某个项目中,看到两个陌生的操作符?? 和 ?,感觉比较有意思,就查了一下资料发现分别叫:空值合并操作符(??)和 可选链操作符(?.),就找资料学习了一下,发现这两个操作符可以帮助我们在实际项目中偷不少懒
空值合并操作符(??)
在说 ?? 之前,我们先说一下 逻辑或操作符(||) ,估计大家很熟悉。
当||左侧表达式为假值时,返回右侧操作数的值,否则返回左侧的值。||的工作原理就是,先把|| 左侧表达式的值进行隐式类型转化为Boolean类型的值,若转化后的值为true,就返回左侧的值,反之,返回右侧的值。
在隐式类型转化时,0 , ‘’,undefined, null 都会被转化为false
console.log('' || '胡三疯') // 胡三疯
console.log(0 || '胡三疯') // 胡三疯
console.log(null || '胡三疯') // 胡三疯
console.log(undefined || '胡三疯') // 胡三疯
?? 的作用 和 逻辑或操作符在功能上很像,区别在于:只有??左侧表达式为null 或undefined时,才会返回右侧的值,否则返回左侧表达式的值
console.log('' ?? '胡三疯') // ''
console.log(0 ?? '胡三疯') // 0
console.log(null ?? '胡三疯') // 胡三疯
console.log(undefined ?? '胡三疯') // 胡三疯
可选链操作符(?.)
个人认为,?. 是链式操作符(.)的增强版,在链式操作过程中,可能会出现中间某个操作值为空(null 或 undefined)的情况,在这种情况下就会报错。
比如:
let person = {name: "胡三疯",education:null
}let school = person.education.school
在上边情况下就会报错,那就可以这样做
let person = {name: "胡三疯",education:null
}let school = person.education?.school
组合使用
通常我在项目中会将上面两种操作符组合使用,在这里我们还是举上边的例子
let person = {name: "胡三疯",education:null
}let school = person.education?.school ?? "暂无大学信息"
console.log(school) // "暂无大学信息"
在这里我为什么不用||,你可知道? —》(假值问题偶)
这篇关于JS中两个吊炸天的操作符(?? 和 ?.)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!