?.的写法 后缀修饰符

概览:处理后端返回的数据data,写法:data?.name。解决vue框架编译出现的报错Cannot read property 'name' of undefined。出现问题的原因:这是因为我们试图访问对象中不在的 key 为 name 的属性,那么怎么解决呢?

若是当前对象不存在某个属性key,在vue中可以使用后缀修饰符,常用的是?和!。

代码举例:

javascript 复制代码
            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中,有两个后缀运算符:?!,分别表示可选属性和非空断言。

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

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

?后缀运算符:

示例代码:

javascript 复制代码
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

!后缀运算符:

实例代码:

javascript 复制代码
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属性会引发错误,因为该属性不存在。

相关推荐
充气大锤8 小时前
前端实现流式输出配合katex.js
开发语言·前端·javascript·ai·vue
滴水未满8 小时前
uniapp的页面
前端·uni-app
邝邝邝邝丹9 小时前
vue2-computed、JS事件循环、try/catch、响应式依赖追踪知识点整理
开发语言·前端·javascript
码农水水9 小时前
阿里Java面试被问:Online DDL的INSTANT、INPLACE、COPY算法差异
java·服务器·前端·数据库·mysql·算法·面试
Coder_Boy_9 小时前
基于SpringAI的在线考试系统-知识点管理与试题管理模块联合回归测试文档
前端·人工智能·spring boot·架构·领域驱动
吃吃喝喝小朋友9 小时前
JavaScript事件
开发语言·前端·javascript
EEEzhenliang9 小时前
CSS的注释
前端·css
猪猪侠|ZZXia9 小时前
# Shell+web+hook的系统构建发布运维系统之API及前端: zzxia-lollipop-remote-gan
运维·前端
Coder_Boy_9 小时前
基于SpringAI的在线考试系统-教学管理与用户管理模块联合回归测试文档
java·前端·数据库·人工智能·spring boot
希赛网9 小时前
网工面试:常问技术问题汇总(3)
服务器·前端·网络·网络工程师·ospf·网工面试·技术面