短路求值时变量未定义报错该怎么处理?

公孙利君 阅读 29

在渲染列表时遇到问题,想用短路求值简化判断,但老是报错。比如写成item && item.name,当item是null时还能正常返回null,但如果item根本未定义就会报错。我试过加typeof检查:

data.items?.map(item => 
  item?.name ?? 'N/A'
)

但某些情况下依然会抛出ReferenceError,这该怎么改才安全?

我来解答 赞 15 收藏
二维码
手机扫码查看
2 条解答
Code°会娟
懒人方案:用可选链操作符和空值合并操作符,先检查items是否存在再map。代码如下:
pre class="pure-highlightjs line-numbers">data.items?.map(item => item?.name ?? 'N/A')
这行代码确保了只有在data.items存在时才会执行map操作,避免了ReferenceError。
点赞
2026-03-20 16:16
书生シ颖杰
你得先确保变量存在,再用可选链。改成 data?.items?.map(item => item?.name ?? 'N/A') 就行了,前面加个问号保险点。真不行就 data && data.items && data.items.map(...) 这样层层判断,累是累了点,但稳。
点赞 8
2026-02-10 03:07