有效避免 Cannot read property ‘xxx‘ of undefined 这类运行时错误。避免因数据字段缺失导致的报错

  1. hasOwnProperty 方法

    • 是 JavaScript 对象的内置方法
    • 用于检测对象自身(非原型链)是否包含指定属性
    • 返回布尔值(true/false
const fetchedData = {
  "order": "21570921",
  "orderType": "1",
  // 其他属性...
};

const item = {
  value: "orderType" // 我们想检查fetchedData是否有这个属性
};

if (fetchedData.hasOwnProperty(item.value)) {
  console.log("fetchedData 拥有属性:", item.value);
} else {
  console.log("fetchedData 不拥有属性:", item.value);
}

在表单回显时,避免因数据字段缺失导致的报错,实现安全赋值:

if (fetchedData.hasOwnProperty('order')) {
  this.formData.order = fetchedData.order; // 仅当字段存在时赋值
}

另一种方法

// 假设 item = { value: "gender", radioOptions: { gender: ["男","女"] } }
const options = item.radioOptions?.[item.value] || []; 
// 结果: ["男","女"]

// 若 radioOptions 未定义
const options = item.radioOptions?.[item.value] || []; 
// 结果: []
  • ?. 是可选链操作符,会先检查 item.radioOptions 是否存在
  • 如果 item.radioOptions 为 null 或 undefined,则直接返回 undefined
  • 如果存在,则继续访问 item.radioOptions[item.value] 属性
  • || [] 部分

    • 当前半部分结果为 undefined/null/false/0/"" 等假值时
    • 自动使用空数组 [] 作为默认值
  • 整体逻辑

    • 尝试安全地获取 item.radioOptions 中 item.value 对应的值
    • 若路径中任意一环不存在(如 radioOptions 未定义或 item.value 不存在)
    • 则返回空数组 [] 避免报错

你可能感兴趣的:(vue前端,前端,javascript,开发语言)