JavaScript TypeError:无法读取未定义属性问题求助
解决JavaScript中
Cannot read properties of undefined (reading '0')报错 问题原因
报错的核心是openingHours.weekdays的值为undefined——weekdays是一个独立的数组变量,并没有被定义为openingHours对象的属性。你能正常访问openingHours.mon,说明openingHours对象本身存在且包含mon属性,但它和独立的weekdays数组没有任何默认关联。
解决方案
根据实际需求,有三种处理方式:
1. 将weekdays挂载到openingHours对象上
如果需要让openingHours包含weekdays属性,直接给对象添加该属性即可:
const weekdays = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']; // 定义openingHours时添加属性,或后续动态追加 const openingHours = { mon: { /* 原有属性值 */ }, // 其他属性... weekdays // ES6简写,等价于weekdays: weekdays }; // 现在可正常访问 console.log(openingHours.weekdays[0]); // 输出'mon'
2. 通过weekdays元素访问openingHours对应属性
如果真实需求是用weekdays里的元素作为键名,获取openingHours的对应属性值,直接用数组元素作为对象的方括号索引:
console.log(openingHours[weekdays[0]]); // 等价于openingHours.mon,正常返回对应值
3. 安全访问(兜底方案)
如果不确定openingHours.weekdays是否存在,可用**可选链操作符?.**避免报错:
console.log(openingHours?.weekdays?.[0]); // 若openingHours或weekdays不存在,仅返回undefined,不会抛出错误
内容的提问来源于stack exchange,提问作者James Seale
相关产品推荐
相关产品推荐

