【发布时间】:2017-06-10 05:13:08
【问题描述】:
我有一个名为 xs 的对象数组,其中存储名称
xs = [
{name: "Peter"},
{name: "Doe"},
{name: "Parker"},
{name: "John"}
];
我有一个函数 setEmptyStr,如果变量未定义,则返回空字符串
function setEmptyStr(v) {
if(typeof v !== 'undefined'){
return v;
} else {
return '';
}
}
我尝试循环我的对象数组(长度比它自己的数组长),我的数组长度是 4,我尝试 5。我不想使用 array.length;
for (var i = 0; i < 5; i++) {
console.log(setEmptyStr(xs[i].name));
}
这 4 个名称返回成功,因为它不是未定义的。但是第五个是返回
TypeError 属性“名称”未定义。
>>Peter
>>Doe
>>Parker
>>John
未捕获的类型错误:无法读取未定义的属性“名称”
我希望第 5 个返回一个空字符串。我怎样才能做到这一点?我的代码有错误吗?
>>Peter
>>Doe
>>Parker
>>John
>>""
【问题讨论】:
-
不,您的代码中没有错误,实际上
arr[5]将是undefined,这就是您收到此错误的原因。 -
xs[i]是未定义的东西,而不是xs[i].name。 -
我试过了,它返回 Uncaught TypeError: Cannot read property 'name' of undefined。我希望我的 arr[5] 返回一个空字符串,而不是未定义的。我该怎么做?
-
@MikeMcCaughan,我明白了。谢谢你^_^
标签: javascript arrays