2016-07-21 3 views
-2

Эта ошибка возникает в разработке javascript.Лучший способ адресовать «не может прочитать свойство * неопределенного»?

не может прочитать свойство присоединиться к неопределенному

Есть ли лучший способ справиться с этой проблемой?

Некоторые из методов, которые я использовал являются:

Инициализация

question.tags = question.tags || []; 
console.log(question.tags.join(', '); 

Если заявления

if(question.tags) { 
    console.log(question.tags.join(', '); 
} 
+0

«Лучший способ» полностью зависит от цели вашей программы и данных. – Xufox

+0

В чем именно проблема? – Menasheh

ответ

1

Вы можете использовать if..else, Object.hasOwnProperty(), Array.isArray(), чтобы определить, question есть s и объект имеет свойство 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 = []; 
} 
0

Там нет конкретного и точного способа сделать это. Если есть экземпляр массива или объекта или строки, он наследует прототипные функции. Как экземпляр массива имеет splice(), экземпляр String имеет replace().

Теперь, когда этот экземпляр не определен, он вызывает ошибку JS. Предположим, что a предположительно является массивом. Вы можете поставить грязную проверку либо логическим ||

(a || []).length; 

или если блок или тройная свойство

return a ? a.length || undefined; 

или чек типа

(Array.isArray(a) || []).length 
-2

Вы можете использовать === и! == операторов, если условие как

if(object.property !== undefined) 
    { 
     ///write your code here 
     } 

Этот оператор будет соответствовать вашему значению + typ е поэтому его легко определить, если указанное свойство не определено или not..hope это поможет :)

Смежные вопросы