vue js 可选链报错问题?
const name = undefined
console.log('🚀 ~ mounted ~ name', name?.()) // undefined
const name = 'mike'
console.log('🚀 ~ mounted ~ name', name?.()) // TypeError: name is not a function
这是为什么呢....
回复
1个回答
test
2024-07-10
Optional Chaining
只负责null
/undefined
判断,不负责判断它是不是function
。如果a
非null
非undefined
也非function
,a?.()
就会抛出错误。
a?.b // undefined if `a` is null/undefined, `a.b` otherwise.
a == null ? undefined : a.b
a?.[x] // undefined if `a` is null/undefined, `a[x]` otherwise.
a == null ? undefined : a[x]
a?.b() // undefined if `a` is null/undefined
a == null ? undefined : a.b() // throws a TypeError if `a.b` is not a function
// otherwise, evaluates to `a.b()`
a?.() // undefined if `a` is null/undefined
a == null ? undefined : a() // throws a TypeError if `a` is neither null/undefined, nor a function
// invokes the function `a` otherwise
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容