#javascript #if-statement #undefined
#javascript #if-оператор #не определено
Вопрос:
У меня есть следующие строки кода:
if ((this.axes.x amp;amp; this.axes.x.property === 'run_number') ||
(this.axes.y amp;amp; this.axes.y.property === 'run_number')) {
this.buildLineGraph(this.axes.y.property === 'run_number');
} else {
this.buildScatterGraph();
}
большую часть времени выполняется без проблем, но время от времени происходит сбой, если какой-либо элемент в цепочках:
this.axes.x.property
this.axes.y.property
выдает ошибку:
Не удается прочитать свойство ‘aaa’ неопределенного значения
где aaa является неопределенным элементом: оси, x, y и т.д.
Как мне проверить наличие каждого возможного неопределенного элемента? Нужна ли мне длинная цепочка вложенных операторов if?
Комментарии:
1. Опубликуйте точное сообщение об ошибке, поскольку неясно, что является неопределенным. Похоже, что это
this
то, что не определено (?)2. Я знаю, это может быть ‘x’ или ‘axes’ или любая часть в цепочке. Я спрашиваю, есть ли элегантный способ проверить все случаи. Прошу прощения, если сообщение непонятно, но английский не является моим родным языком.
Ответ №1:
Я отвечаю на свой собственный вопрос, но не стесняйтесь опубликовать лучшее и более элегантное решение в виде отдельного ответа, чтобы я мог проголосовать за него.
if (this amp;amp; this.axes amp;amp; this.axes.x amp;amp; this.axes.y amp;amp; this.axes.x.property amp;amp; this.axes.y.property) {
if ((this.axes.x amp;amp; this.axes.x.property === 'run_number') ||
(this.axes.y amp;amp; this.axes.y.property === 'run_number')) {
this.buildLineGraph(this.axes.y.property === 'run_number');
} else {
this.buildScatterGraph();
}
}