1.?.

首先?.作用就是判断这个对象(下的(Object)下的(value)下的(length)是否为null或者undefined,
(如果没有加 ?. ,有的时候会报length是null 的错误,或者说 null length 没有定义,然有了?. 就省去了好多麻烦)
当其中一链为null或者undefined时就返回undefined,这样即使中间缺少一个属性也不会报错

来看看例子:

相当于?. 允许开发人员读取深度嵌套在对象链中的属性值,而不必验证每个引用。当引用为空时,表达式停止计算并返回 undefined。

2.??

在 JS 中,?? 运算符被称为非空运算符。如果第一个参数不是 null/undefined(译者注:这里只有两个假值,但是 JS 中假值包含:未定义 undefined、空对象 null、数值 0、空数字 NaN、布尔 false,空字符串'',不要搞混了),将返回第一个参数,否则返回第二个参数

null ?? 5 // => 5
3 ?? 5 // => 3

 

这里的??相当于就是进行了一次三元运算的操作

当然这里的?.和??也不要在模块里面大量进行使用,因为每使用一次就相当于进行了一次判断,这样在模块中出现次数非常多的时候会对模块的性能有一定的影响,所以有其他的优化解决的方案就使用其他的

 

 

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐