Что здесь делает условие if (td)? Этот код написан для поиска строки в таблице.
var input - это поле поиска, var table - это таблица.
function myFunction() {
// this function filters the table using search box
var input, filter, table, tr, td, i;
input = document.getElementById("myInput"); // the search box
filter = input.value.toUpperCase();
table = document.getElementById("myTable"); // the table
tr = table.getElementsByTagName("tr"); // the row of table
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
if (td) { // why do we need this condition here?
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Код if (td) проверяет, есть ли что-то в td, и это реально, так что ваша следующая строка не выдаст ошибку при поиске td.innerHTML.
td содержит данные для строки, и вы сопоставляете данные с некоторым фильтром. Что делать, если td не существует, вы получите ошибку undefined
Метод Element.getElementsByTagName () возвращает живую HTMLCollection элементов с заданным именем тега.
Результатом является живая HTMLCollection найденных элементов в том порядке, в котором они появляются в поддереве. Если элементы не были найдены (в вашем случае, если есть <tr> без единственного <td> внутри), HTMLCollection пуст.
Если теперь вы получите пустой HTMLCollection, тогда метод innerHTML, который вы вызываете для следующей строки, приведет к следующей ошибке, и ваш код сломается.
"TypeError: td is undefined"
Если в строке нет элементов
<td>, тогда переменная будетundefined.