美文网首页
js中?.、??、??=的用法

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

作者: SailingBytes | 来源:发表于2022-04-19 18:02 被阅读0次

    1、可选链?. 

    javascript中如果一个值为null、undefined,而直接访问。。。

    会报 Uncaught TypeError: Cannot read properties of undefined 异常错误。

    而在真实的项目中是会出现这种情况,有这个值就读这个值,没有这个值也不会报错。

    可能有的小伙伴会说用三木运算符、或者if判断,但是这种也是可以的,但是在特定情况下会很复杂(如obj.data.person.name)

    而.?则完美解决这个问题(obj?.data?.person?.name)。

    ?. 可以无限链下去,不论有多少属性,只要有最后可以访问到属性,就会直接赋值最后的属性值。否则当任何一个链出现问题,立刻停止,而后赋值undefined。

    2、空值合并运算符??

    ?? 双问号后面是默认值(可常量、可变量)。

    在 ?? 前面没有值得时候会默认 ?? 后边的值(类似于三木运算符中的:后面赋值)。

    let obj = {age: 0, name: '', sex: null};

    obj.age ?? '111'; // 0

    obj.name ?? '111'; // ''

    obj.sex ?? '111';     // 111

    obj.addr ?? '111';     // 111

    空值合并运算符??

    ?? 出现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

    空值赋值运算符??=

    相关文章

      网友评论

          本文标题:js中?.、??、??=的用法

          本文链接:https://www.haomeiwen.com/subject/hmnsertx.html