Node.js中无需多层判断,避免读取嵌套null属性报错的方法
Node.js中规避多层属性判断的方案
以下几种方法可以替代繁琐的多层if判断,避免访问null/undefined属性时抛出错误:
- 可选链操作符(
?.)
这是最直接的解决方案,ES2020及以上版本的Node.js支持。用?.替代普通的.访问属性,当链中任意环节为null或undefined时,表达式会直接返回undefined,不会抛出TypeError:
const lat2 = location?.address?.coordinate?.lat; const lon2 = location?.address?.coordinate?.lon;
- 可选链+空值合并操作符(
??)
如果需要为不存在的属性设置默认值(比如数据库存储需要默认值),可以结合??(仅对null/undefined生效,比||更精准):
const lat2 = location?.address?.coordinate?.lat ?? 0; const lon2 = location?.address?.coordinate?.lon ?? 0;
这样当属性不存在时,会用0作为默认值,避免数据库存储undefined。
- 解构赋值+默认值
如果需要一次性提取多个属性,可使用解构赋值配合嵌套默认值,同样要结合可选链处理顶层可能的null/undefined:
const { address: { coordinate: { lat = 0, lon = 0 } = {} } = {} } = location ?? {};
这种写法适合批量提取属性,但层级较多时可读性略差,按需选择即可。
内容的提问来源于stack exchange,提问作者user1592380
相关产品推荐
相关产品推荐

