#javascript #arrays #error-handling
#javascript #массивы #обработка ошибок
Вопрос:
Я знаю, что мой gfg[item[0] 1][item[1]] не существует, но мне нужно выполнить свой код дальше:
arrayfirstword.forEach(item => {
if(typeof(gfg[item[0] 1][item[1]]) !== undefined){
console.log(1);
}
Есть ли способ отключить эту ошибку?
Ответ №1:
Нет. Вы должны скорректировать свой код и убедиться, что вы не получаете доступ к вещам из неопределенного значения:
arrayfirstword.forEach(item => {
if(item amp;amp; gfg amp;amp; item[0] amp;amp; item[1] amp;amp; gfg[item[0] 1] amp;amp; typeof(gfg[item[0] 1][item[1]]) !== undefined){
console.log(1);
}
Для аннулирования повторяющихся выражений:
arrayfirstword.forEach(item => {
if (!item || !item[0] || !item[1] || !gfg) return;
let key = item[0] 1;
let val = gfg[key];
if (val amp;amp; val[item[1]]) {
console.log(1);
}
В этом случае это уродливее, но если условие становится более сложным, возможно, было бы лучше разбить его на 5-6 строк вместо того, чтобы иметь огромное вложенное сложное условие.
Комментарии:
1. Спасибо, брат, но я не понял, вы все еще проверяете значение неопределенной переменной?
2. @s662720h_uu
||
иamp;amp;
ленивы. Они перестают оценивать условие, когда могут вернуть значение. Напримерtrue || someFunc()
, не будет запускатьсяsomeFunc()
, потомуtrue || anything === true
что . То же самое сfalse amp;amp; someFunc()
will not runsomeFunc()
, потомуfalse amp;amp; anything === false
что .undefined.attribute
это ошибка, поэтому вы можете избежать ее, выполнивif (v amp;amp; v.attribute)
проверку ifv
is undefinedv amp;amp; v.attribute
onlyv
, посколькуundefined
это «falsey», и он не будет пытаться получитьattribute
отundefined