以下是代码:
for (i = 0; i < data.RecruitingGroups.length; i++) {
data.RecruitingGroups[i].id = i;
if (data.RecruitingGroups[i].Rule.Rules != null) {
for (j = 0; j < data.RecruitingGroups[i].Rule.Rules.length; i++) {
data.RecruitingGroups[i].Rule.Rules[j].id = j;
}
}
}
问题是有时候RecruitingGroups []。规则为空。所以我尝试在继续并运行下一个for循环之前验证它不是null,但它仍然会抛出错误:
未捕获的TypeError:无法读取属性“规则”为null
如何绕过此错误。
答案 0 :(得分:1)
您正在测试Rule.Rules
是null
。那不是问题; Rule
本身为null
,错误消息就是证明。如果其中任何一个都可以为空,则需要同时测试Rule
和Rule.Rules
。
尝试
if (data.RecruitingGroups[i].Rule && data.RecruitingGroups[i].Rule.Rules) {
答案 1 :(得分:1)
你的第二个循环需要增加j++
而不是i++
。 =)
答案 2 :(得分:-1)
if (data.RecruitingGroups[i].Rule && data.RecruitingGroups[i].Rule.Rules) {
for (j = 0; j < data.RecruitingGroups[i].Rule.Rules.length; i++) {
data.RecruitingGroups[i].Rule.Rules[j].id = j;
}
}