typescript使用 ?. ?? ??= 运算符的方法步骤

 更新时间:2024年01月04日 16:14:23   作者:겐호 3  
本文主要介绍了typescript使用 ?. ?? ??= 运算符的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

可选链运算符 (?.)

用于访问可能为 null 或 undefined 的属性或方法,以避免出现异常错误。如果使用 . 运算符来访问一个可能为 null 或 undefined 的值,会导致运行时错误。而使用 ?. 运算符,如果该值为 null 或 undefined,则表达式会短路,返回 undefined,而不会抛出异常。
例如:

let obj = { foo: { bar: 42 } };
let value = obj?.foo?.bar; // 如果 obj 或 obj.foo 或 obj.foo.bar 为 null 或 undefined,value 将为 undefined,否则为 42

空值合并运算符 (??)

用于给定一个默认值,当一个表达式的值为 null 或 undefined 时,返回默认值。如果一个变量或表达式的值为 null 或 undefined,使用 ?? 运算符可以提供一个备选值。
例如:

let x = null;
let y = x ?? 5; // 如果 x 为 null 或 undefined,y 将为 5,否则为 x 的值

空值合并赋值运算符 (??=)

用于将默认值赋给一个变量,当该变量的值为 null 或 undefined 时。如果一个变量的值为 null 或 undefined,可以使用 ??= 运算符将一个默认值赋给该变量。
例如:

let x = null;
x ??= 5; // 如果 x 为 null 或 undefined,将把 5 赋给 x

??和 ||比较相似

?? 和 || 区别

假值:false、0、空字符串、null、undefined 等
?? 判断左侧操作数为null或undefined时,返回右侧操作数
|| 判断左侧操作数为’假值'时,返回右侧操作数

let a:any;
let b = '1111';
let c = null;
let d:any = 0;
let e;
e ??= a?.b ?? c ?? d?.a ?? b;

a?.b:这是可选链运算符 ?. 的使用,它尝试访问变量 a 的属性 b。如果 a 为 null 或 undefined,则表达式返回 undefined。
a?.b ?? c:这是空值合并运算符 ?? 的使用,它判断左侧操作数 a?.b 是否为 null 或 undefined。如果是,则返回右侧操作数 c 的值。否则,返回左侧操作数 a?.b 的值。
a?.b ?? c ?? d?.a:继续使用空值合并运算符 ??,判断前一个表达式的结果 a?.b ?? c 是否为 null 或 undefined。如果是,则返回右侧操作数 d?.a 的值。否则,返回前一个表达式的结果。
a?.b ?? c ?? d?.a ?? b:再次使用空值合并运算符 ??,判断前一个表达式的结果 a?.b ?? c ?? d?.a 是否为 null 或 undefined。如果是,则返回右侧操作数 b 的值。否则,返回前一个表达式的结果。
根据上述表达式的逻辑,以下是对应的执行过程:

a 的值为 undefined。
a?.b 的结果为 undefined。
a?.b ?? c 的结果为 null,因为左侧操作数为 undefined,右侧操作数为 null。
a?.b ?? c ?? d?.a 的结果为 0,因为左侧操作数为 null,右侧操作数为 d?.a,而 d 的值为 0。
a?.b ?? c ?? d?.a ?? b 的结果为 '1111',因为左侧操作数为 0,右侧操作数为 '1111'。
最终,变量 e 的值被赋为 '1111'。

到此这篇关于typescript使用 ?. ?? ??= 运算符的方法步骤的文章就介绍到这了,更多相关typescript运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • JavaScript asp.net 获取当前超链接中的文本

    JavaScript asp.net 获取当前超链接中的文本

    今天用到,不会。网上找到一个方法,赶快记下来。可以获取超链接的链接文本。
    2009-04-04
  • js中更短的 Array 类型转换

    js中更短的 Array 类型转换

    代码永远都是那么好玩,而 Trick 不断。那天张克军在 twitter 上说还有比 [].slice.call() 更短的 Array 转换么
    2011-10-10
  • javascript使用Blob对象实现的下载文件操作示例

    javascript使用Blob对象实现的下载文件操作示例

    这篇文章主要介绍了javascript使用Blob对象实现的下载文件操作,结合实例形式分析了javascript使用Blob对象下载文件相关原理、操作技巧与注意事项,需要的朋友可以参考下
    2020-04-04
  • js获取URL的参数的方法(getQueryString)示例

    js获取URL的参数的方法(getQueryString)示例

    getQueryString方法默认返回的是 string如果是int类型,则JS使用的时候,要进行转换一下,下面有个不错的示例,大家可以参考下
    2013-09-09
  • JavaScript DOM节点添加示例

    JavaScript DOM节点添加示例

    本节为大家介绍下JavaScript DOM节点添加,将node里面的str放到h1段落中使之成为h1的新段落
    2014-07-07
  • Uniapp 实现全民分销功能原理解析

    Uniapp 实现全民分销功能原理解析

    这篇文章主要介绍了Uniapp 实现全民分销功能,本篇文章主要介绍全民分销功能实现原理,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • WebGL学习教程之Three.js学习笔记(第一篇)

    WebGL学习教程之Three.js学习笔记(第一篇)

    Three.js是一个js的开源框架,它把webgl的所有东西都封装好了,我们不再需要去了解webgl那些比较麻烦的细节,直接在此框架上进行开发,既方便,又快捷,而且很容易就能学习,感兴趣的朋友跟随小编一起看看吧
    2019-04-04
  • 利用JavaScript实现放鞭炮动画效果

    利用JavaScript实现放鞭炮动画效果

    谈及过年,最先让人想到的就是,噼里啪啦的鞭炮声。本文将利用JavaScript实现一个简单的放鞭炮动画效果,感兴趣的小伙伴可以了解一下
    2023-01-01
  • JS中Swiper的使用和轮播图效果

    JS中Swiper的使用和轮播图效果

    Swiper是移动端的一款非常强大的触摸滑动插件。下面通过本文给大家分享JS中Swiper的使用和轮播图效果,感兴趣的的朋友一起看看吧
    2017-08-08
  • EL表达式截取字符串的函数说明

    EL表达式截取字符串的函数说明

    这篇文章主要介绍了EL表达式截取字符串的函数说明,在文章下面给大家介绍了JSTL中自带的方法列表以及其描述,需要的朋友参考下吧
    2017-09-09

最新评论