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 获取当前超链接中的文本
今天用到,不会。网上找到一个方法,赶快记下来。可以获取超链接的链接文本。2009-04-04
js获取URL的参数的方法(getQueryString)示例
getQueryString方法默认返回的是 string如果是int类型,则JS使用的时候,要进行转换一下,下面有个不错的示例,大家可以参考下2013-09-09


最新评论