如何简化data && data.password && data.password.length这类条件表达式
问题解答
正确简化写法
你示例中写的if (data?password?length > 7)属于语法不规范的写法,正确的简化条件如下:
if (data?.password?.length > 7) { // Do something }
该写法和你最初的多层逻辑与判断执行逻辑完全一致:只要data为null/undefined、或者data.password为null/undefined时,整个data?.password?.length表达式会直接返回undefined,而undefined > 7的结果为false,完全符合原条件的拦截逻辑。
对应技术术语
这类表达式的官方术语是可选链操作符(Optional Chaining Operator),是ES2020(ES11)新增的语法特性,核心作用就是简化多层嵌套属性、方法、数组元素访问时的非空判断逻辑,避免手动编写大量连续的&&判断代码。
可选链除了用于对象属性访问,还支持两种常见场景:
- 调用可能不存在的方法:
someObject.someMethod?.() - 访问可能不存在的数组元素:
someArray?.[2]
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

