typescript使用 ?. ?? ??= 运算符的方法步骤
作者:겐호 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运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!