js 中 ?. 和??及??=的含义及用法说明

示例:?. 可选链

当变量为初始化时

let p;

let l;

console.log(p.value)

会报错如下

出现以上报错的原因:

js ES标准中有5 种基本类型:Undefined, Null, Boolean, Number, String。任何时候都不建议显式的设置一个变量为 undefined,保存对象的变量还没有真正保存对象,应该设置成 null。

因为undefined 和 null 不能用点操作符去访问属性的。

解决办法:出现上述问题的一般解决办法

let p;

let l;

if(!!p){

l = p.value;

}else{

l = undefined;

}

console.log(l)

简洁写法:

let p;

let l;

l= p?.value

console.log(l)

----------------------

let p={value:{name:2}};

let l;

l= p?.value?.name;

console.log(l)

//l = 2

示例2  空值合并运算符??

当一个值等于0时,我们也需要当它存在而不是返回false时

一般代码:

let p;

let l = 0;

let g = { name:'uz' }

if(!!l || l === 0 ){

    p = l;

}else{

    p = g;

}

console.log(p)

优化后代码:

let p;

let l = 0;

let g = { name:'uz' }

p = l ?? g;

console.log(p)

上述代码,当l是undefined或null时p等于l,当l不为undefined或null时p都等于g

实例3 空值运算符??=

//当??=  左侧的为null或undefined时,才会把??=右侧的值赋值给左侧

let p = '123';

let l = 1

let g = null;

let z = '456'

g ??= p;

z ??= l

console.log(g)//123

console.log(z)//456

测试:

let p;

let l = "一枚前端"

let g = null;

let r = 0;

let x;

x ??= p?.l ?? g ?? r?.p ?? l;

console.log(x)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript,Map是一种数据结构,它可以将键值对存储在一个对象,其键和值可以是任何类型的数据。Map的使用方法非常简单,可以使用new操作符和Map构造函数来创建一个新的Map对象。例如: ``` let map = new Map(); ``` 上面的代码创建了一个新的空Map对象。我们可以使用set方法向Map对象添加新的键值对,例如: ``` map.set('name', '张三'); map.set('age', 18); ``` 上面的代码向Map对象添加了两个键值对:'name'对应的值为'张三','age'对应的值为18。我们也可以使用get方法获取Map对象的某个键对应的值,例如: ``` console.log(map.get('name')); // 输出:张三 console.log(map.get('age')); // 输出:18 ``` 上面的代码分别输出了Map对象'name'和'age'对应的值。我们还可以使用has方法检查某个键是否存在于Map对象,例如: ``` console.log(map.has('name')); // 输出:true console.log(map.has('gender')); // 输出:false ``` 上面的代码分别检查了Map对象是否存在'name'和'gender'这两个键。我们还可以使用delete方法删除Map对象的某个键值对,例如: ``` map.delete('age'); console.log(map.get('age')); // 输出:undefined ``` 上面的代码删除了Map对象'age'对应的键值对,并使用get方法检查该键是否存在于Map对象(输出结果为undefined,表示该键不存在)。 综上所述,Map对象提供了一种灵活的存储键值对的方式,可以方便地进行添加、删除、查找等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值