You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对象为null时读取属性触发"无法读取属性"错误,该如何解决?

解决无法读取null/undefined对象属性的空值检查问题

你遇到的cannot read 'record' of null错误,本质是data本身为null或undefined,而非record属性为null——直接访问一个null/undefined值的属性会触发类型错误。以下是几种可行的解决方法:

方案1:分层短路检查

先判断data是否有效,再检查属性,利用逻辑或的短路特性避免后续报错:

var data = Template.currentData();
if (!data || !data.record) {
  // 这里处理空值对应的业务逻辑
}

如果data是null/undefined,!data为true,逻辑或会直接返回结果,不会执行后面的!data.record,自然不会报错。

方案2:使用可选链操作符(ES2020+)

这是更简洁的现代写法,?.操作符会在左侧值为null/undefined时直接返回undefined,不会抛出错误:

var data = Template.currentData();
if (!data?.record) {
  // 处理空值逻辑
}

方案3:提前给data兜底赋值

如果后续还要多次访问data的其他属性,可以先给data设置默认空对象,从根源避免属性访问报错:

var data = Template.currentData() || {}; // 若原data为null/undefined,就用空对象兜底
if (!data.record) {
  // 处理空值逻辑
}

精确区分空值场景(可选)

如果需要区分record是null/undefined还是空字符串"",可以做更精准的判断:

var data = Template.currentData();
if (!data || data.record == null || data.record === "") {
  // 当data无效,或record为null/undefined,或record是空字符串时触发
}

也可以结合可选链和空值合并操作符进一步简化:

if ((data?.record ?? "") === "") {
  // 效果同上
}

内容的提问来源于stack exchange,提问作者user20330985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:10:28