当前位置: 首页 > news >正文

Vue中!.和?.是什么意思

在Vue(或更广泛地说,在JavaScript和TypeScript中),!.?. 是两个与可选链(Optional Chaining)和断言非空(Non-null Assertion)相关的操作符,它们分别用于处理可能为nullundefined的值,以避免运行时错误。

?. - 可选链(Optional Chaining)

可选链操作符?.允许你读取位于连接对象链深处的属性的值,而不必显式验证链中的每一部分是否存在。如果链中的某个对象是nullundefined,表达式短路返回undefined,而不是抛出错误。

示例

const obj = {  a: {  b: {  c: 1  }  }  
};  console.log(obj.a?.b?.c); // 输出: 1  
console.log(obj.x?.y?.z); // 输出: undefined,而不是抛出错误

在Vue中,这可以用于安全地访问组件的props、data或computed属性,特别是当这些属性可能未定义时。

!. - 断言非空(Non-null Assertion)

然而,需要注意的是,!. 并不是JavaScript或TypeScript中的一个标准操作符。你可能是在提及TypeScript中的非空断言操作符!,它用在变量或属性之后,用于告诉TypeScript编译器:“我知道这个值不是null或undefined,请放心使用。”这主要用于当你确信某个值不会是nullundefined,但TypeScript的静态分析无法确定这一点时。

示例(使用!进行非空断言):

function processValue(value: string | null) {  // 假设我们知道value不会是null  const length = value!.length; // 使用!来断言value不是null  console.log(length);  
}

在Vue项目中,如果你在使用TypeScript,这个操作符可以帮助你处理那些从propsdatacomputed属性中获取的、你确信不会是nullundefined的值。

总之,?. 是可选链操作符,用于安全地访问深层嵌套的对象属性;而!.(实际上是!)是非空断言操作符,用于告诉TypeScript编译器某个值不是nullundefined。不过,要注意!.并不是直接作为一个操作符存在的,而是!操作符在特定上下文中的用法。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Thinkphp仿华为商城源码/红色风格电脑手机数码商城系统网站源码
  • C++要点总结_02_表达式与语句
  • mongodb数据库运维之创建数据库及赋权限
  • 【解决方案】华普微汽车智能钥匙解决方案
  • 【2024蓝桥杯/C++/B组/传送阵】
  • 小程序开发_05
  • Vue 3 中使用 InMap 绘制热力图
  • kubernetes管理GUI工具Lens
  • 嵌入式软件工程师面试:RTOS相关问题全攻略
  • vue路由跳转时改变路由参数组件不渲染问题【已解决】
  • opencascade AIS_MouseGesture AIS_MultipleConnectedInteractive源码学习
  • 回溯---组合
  • Postman中的灾难恢复演练:API的弹性测试策略
  • 数据资产治理:以业务价值为驱动
  • TPAMI 2024 | 全新框架!深度学习可解释度量学习!
  • 30秒的PHP代码片段(1)数组 - Array
  • ES6核心特性
  • FastReport在线报表设计器工作原理
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Phpstorm怎样批量删除空行?
  • Solarized Scheme
  • 对象管理器(defineProperty)学习笔记
  • 少走弯路,给Java 1~5 年程序员的建议
  • 收藏好这篇,别再只说“数据劫持”了
  • 思维导图—你不知道的JavaScript中卷
  • 通信类
  • 学习HTTP相关知识笔记
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​【已解决】npm install​卡主不动的情况
  • ​第20课 在Android Native开发中加入新的C++类
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #define、const、typedef的差别
  • #WEB前端(HTML属性)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (Charles)如何抓取手机http的报文
  • (二)丶RabbitMQ的六大核心
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (四)Linux Shell编程——输入输出重定向
  • (四)库存超卖案例实战——优化redis分布式锁
  • (万字长文)Spring的核心知识尽揽其中
  • (转)甲方乙方——赵民谈找工作
  • (自用)gtest单元测试
  • ..回顾17,展望18
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net Core和.Net Standard直观理解
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [].slice.call()将类数组转化为真正的数组
  • [20170713] 无法访问SQL Server
  • [20190113]四校联考
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [android] 切换界面的通用处理