JavaScript中?. 和??分别是什么详解
?.
和 ??
是 JavaScript 中的两个新操作符,分别是可选链操作符(optional chaining operator)和空值合并操作符(nullish coalescing operator)。
?. 操作符
?.
可选链操作符用于访问可能为空或未定义的属性或方法,它允许我们安全地访问嵌套对象的属性,如果中间的属性为空或未定义,则不会抛出错误,而是返回 undefined。例如:
const obj = { foo: { bar: 123 } }; // 普通访问属性的方式 const x = obj.foo.bar; // x = 123 // 使用可选链操作符 const y = obj?.foo?.bar; // y = 123 // 如果对象未定义,则返回 undefined const z = undefined?.foo?.bar; // z = undefined
?? 操作符
??
空值合并操作符用于检查一个变量是否为 null 或 undefined,如果是,则返回一个默认值,否则返回该变量的值。与传统的逻辑运算符 ||
不同,??
只会在左侧的值为 null 或 undefined 时返回右侧的默认值,对于其他假值(如空字符串、0、false 等)并不会返回默认值,而是会返回它本身。例如:
const x = undefined ?? 'default'; // x = 'default' const y = null ?? 'default'; // y = 'default' const z = 'value' ?? 'default'; // z = 'value' const a = '' ?? 'default'; // a = '' const b = '' || 'default'; // b = 'default'
需要注意的是,??
操作符需要在 ES11 及以上的版本才能使用。
和||运算符的区别:
1. || 只会在左边的值为假值时返回右边的值 (0, '', undefined, null, false 等都为假值)
2. ?? 是在左边的值为undefined或者null时才会返回右边的值
总结
到此这篇关于JavaScript中?. 和??分别是什么的文章就介绍到这了,更多相关JS中?. 和??介绍内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
这篇文章主要介绍了微信小程序获取session_key,openid,unionid的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04跟我学Node.js(四)---Node.js的模块载入方式与机制
Node.js中模块可以通过文件路径或名字获取模块的引用。模块的引用会映射到一个js文件路径,除非它是一个Node内置模块。Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始的时候就预加载了。2014-06-06CORS cross-origin resourse sharing跨域资源共享解决
这篇文章主要为大家介绍了CORS cross-origin resourse sharing跨域资源共享的解决方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04
最新评论