这个错误在javascript开发中出现了很多。
无法读取未定义的属性连接
有没有最好的方法来处理这个问题?
我使用的一些技术是:
初始化
question.tags = question.tags || [];
console.log(question.tags.join(', ');
如果声明
if(question.tags) {
console.log(question.tags.join(', ');
}
答案 0 :(得分:1)
您可以使用if..else
,Object.hasOwnProperty()
,Array.isArray()
来确定question
是否存在且对象是否具有属性tags
而question.tags
是一个数组
if (typeof question === "object"
&& question.hasOwnProperty("tags")
&& Array.isArray(question.tags)) {
//do stuff
} else {
// do other stuff, e.g
// question = {};
// question.tags = [];
}
答案 1 :(得分:0)
没有具体而准确的方法。如果存在Array或Object或String的实例,则它会包含原型函数。就像一个数组实例有一个splice(),String实例有一个replace()。
现在,当此实例未定义时,它会抛出JS错误。让我们假设<p>
应该是一个数组。您可以通过逻辑||
a
或if块或三元属性
(a || []).length;
或类型检查
return a ? a.length || undefined;
答案 2 :(得分:0)
question.tags ? question.tags : []
答案 3 :(得分:-2)
你可以在条件如
中使用===和!==运算符 if(object.property !== undefined)
{
///write your code here
}
此运算符将匹配您的值+类型,以便易于识别是否提及属性未定义。希望这有助于:)