京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

JavaScript中 ?、!和?? 的用法及区别详解

2024-11-2 22:34| 发布者: c2688| 查看: 85| 评论: 0

摘要: 目次1. 可选链操作符 ?.2. 非空断言操作符 !.3. 空值归并操作符 ??1. 可选链操作符 ?. 用法: [code]obj?.prop[/code] 或 [code]obj?.[expr][/code] 功能: 当实验访问一个深层嵌套的属性时,如果对象[code]obj[/code]
目次

1. 可选链操作符 ?.

用法: [code]obj?.prop[/code] 或 [code]obj?.[expr][/code]

功能: 当实验访问一个深层嵌套的属性时,如果对象[code]obj[/code]是[code]null[/code]或[code]undefined[/code],使用[code]?.[/code]操作符可以克制抛堕落误,而是直接返回[code]undefined[/code],而不是实验访问不存在的属性导致的错误。

示例:

[code]const user = null; console.log(user?.name); // 输出 undefined 而不是抛堕落误 [/code]

2. 非空断言操作符 !.

用法: [code]obj!.prop[/code]

功能: 这个操作符告诉TypeScript编译器你确定该表达式绝对不会为[code]null[/code]或[code]undefined[/code],从而克制了类型查抄时的警告。必要注意的是,这仅影响编译时的类型查抄,并不会改变运行时的行为,因此如果实际上该表达式为[code]null[/code]或[code]undefined[/code],依然会导致运行时错误。

示例: (此示例假设在TypeScript情况下)

[code]let user: User | null = fetchUserData(); console.log(user!.name); // 告诉TypeScript你确定user不是null或undefined [/code]

3. 空值归并操作符 ??

用法: [code]value ?? fallback[/code]

功能: 当[code]value[/code]为[code]null[/code]或[code]undefined[/code]时,返回[code]fallback[/code]指定的值;否则,返回[code]value[/code]自己。这与逻辑或[code]||[/code]操作符不同,因为[code]||[/code]会在[code]value[/code]为任何假值(如0、false、空字符串等)时就返回[code]fallback[/code],而[code]??[/code]只在[code]value[/code]严酷即是[code]null[/code]或[code]undefined[/code]时才举行替换。

示例:

[code]let num = null; const result = num ?? 42; // result为42,因为num是null [/code]

总结起来,[code]?.[/code]资助安全地访问对象属性,[code]!.[/code]用于告诉TypeScript编译器忽略大概的[code]null[/code]或[code]undefined[/code]查抄(使用时要确保安全),而[code]??[/code]则是在值为[code]null[/code]或[code]undefined[/code]时提供一个替换值。

到此这篇关于JavaScript中 ?、!和?? 的用法及区别详解的文章就先容到这了,更多相关JavaScript ?、!、??用法及区别内容请搜索脚本之家从前的文章或继续欣赏下面的相关文章希望大家以后多多支持脚本之家!


来源:https://www.jb51.net/javascript/328620dup.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 14:53 , Processed in 0.038826 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部