js中?.、??、??=的用法

源代码 2024-9-13 04:42:21 98 0 来自 中国
1、可选链?. 

javascript中假如一个值为null、undefined,而直接访问。。。
会报 Uncaught TypeError: Cannot read properties of undefined 非常错误。


1.png 而在真实的项目中是会出现这种情况,有这个值就读这个值,没有这个值也不会报错。
大概有的小同伴会说用三木运算符、或者if判定,但是这种也是可以的,但是在特定情况下会很复杂(如obj.data.person.name)
而.?则完满办理这个标题(obj?.data?.person?.name)。


2.png ?. 可以无穷链下去,岂论有多少属性,只要有末了可以访问到属性,就会直接赋值末了的属性值。否则当任何一个链出现标题,立刻制止,而后赋值undefined。
2、空值归并运算符??

?? 双问号反面是默认值(可常量、可变量)。
在 ?? 前面没有值得时间会默认 ?? 后边的值(类似于三木运算符中的:反面赋值)。
let obj = {age: 0, name: '', sex: null};
obj.age ?? '111'; // 0
obj.name ?? '111'; // ''
obj.sex ?? '111';     // 111
obj.addr ?? '111';     // 111
3.png ?? 出现null ,undefined值会后,归并默认值(??反面的值)。
3、空值赋值运算符??=


和空值归并运算符??类似(可常量、可变量)。
当??=左侧的值为null、undefined的时间,会将右侧的值赋值给左侧变量。
let obj = {age: 0, name: '', sex: null, addr: undefined};
obj.age ??= '111';     // 0
obj.name ??= '111';     // ''
obj.sex ??= '111';     // 111
obj.addr ??= '111' ;     // 111


4.png
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:26, Processed in 0.148270 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表