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

?.的写法 后缀修饰符

概览:处理后端返回的数据data,写法:data?.name。解决vue框架编译出现的报错Cannot read property 'name' of undefined。出现问题的原因:这是因为我们试图访问对象中不在的 key 为 name 的属性,那么怎么解决呢?
若是当前对象不存在某个属性key,在vue中可以使用后缀修饰符,常用的是?和!。

代码举例:

            const resData = res.data.data || []const params1 = reactive({shyx: resData?.age?.shyx,shzwh: resData?.age?.shzwh,whys: resData?.age?.whys,})const params2 = resData.area?.map((item) => {return {name: item.name,value: item.num}})const params3 = reactive({partymember: resData?.partyMember?.partymember,other: resData?.partyMember?.other,})

vue3中两种后缀运算符:

在Vue 3中,有两个后缀运算符:?!,分别表示可选属性和非空断言。

?可选属性:表示该属性是可选的,如果该属性不存在,不会引发错误。

!非空断言:表示该属性一定存在,如果该属性不存在,则会引发错误。

?后缀运算符:

示例代码:

const message = { text: 'Hello World' }
const greeting = message.text?.toUpperCase() // greeting = 'HELLO WORLD'
const emptyMessage = {}
const emptyGreeting = emptyMessage.text?.toUpperCase() // emptyGreeting = undefined

结果分析:

 在上面的代码中,当message对象存在text属性时,可以将text属性的值转换为大写字母。而当emptyMessage对象不存在text属性时,使用?.运算符访问text属性不会引发错误,返回值为undefined

!后缀运算符: 

实例代码:

const message = { text: 'Hello World' }
const greeting = message.text!.toUpperCase() // greeting = 'HELLO WORLD'
const emptyMessage = {}
const emptyGreeting = emptyMessage.text!.toUpperCase() // TypeError

结果分析:

在上面的代码中,当message对象存在text属性时,可以将text属性的值转换为大写字母。而当emptyMessage对象不存在text属性时,使用!运算符访问text属性会引发错误,因为该属性不存在。 

 

http://www.lryc.cn/news/109954.html

相关文章:

  • org.apache.hadoop.hive.ql.exec.DDLTask. show Locks LockManager not specified解决
  • Adaptive autosar 都有哪些模块?各有什么功能?
  • C++ 动态内存分配
  • 设计模式——面向对象的7大设计原则
  • 智慧防汛,数字科技的力量
  • “中国软件杯”飞桨赛道晋级决赛现场名单公布
  • JDBC处理批量数据提高效率
  • 使用css和js给按钮添加微交互的几种方式
  • react面试之context的value变化时,内部所有子组件是否变化
  • 使用okHttp不走代理问题
  • python moviepy 自动化音视频处理实践
  • 聊聊混合动力汽车和纯电骑车的优势和劣势
  • 算法训练Day39|62.不同路径 ● 63. 不同路径 II
  • react中hooks分享
  • LeetCode1207. 独一无二的出现次数
  • 【maven】构建项目前clean和不clean的区别
  • Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer
  • 从零开始理解Linux中断架构(24)软中断核心函数__do_softirq
  • 【云原生】Kubernetes中deployment是什么?
  • sk_buff操作函数学习
  • conda create时候出现JSONDecoderError解决方法
  • Electron 工具进程utilityProcess 使用中遇到的坑点汇集
  • JdbcTemplate
  • PROFINET转TCP/IP网关profinet网线接头接法
  • 【FPGA IP系列】FIFO的通俗理解
  • Kylin v10基于cephadm工具离线部署ceph分布式存储
  • 框架的前置学习-反射
  • 【使用bat脚本实现批量创建文件夹、批量复制文件至对应文件夹中】
  • 面向视频会议场景的 H.266/VVC 码率控制算法研究
  • 【网络基础实战之路】设计网络划分的实战详解