Неизвестный оператор if в javascript

Что здесь делает условие 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";
            }
        }       
    }
}

Если в строке нет элементов <td>, тогда переменная будет undefined.

Pointy 10.04.2018 17:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
120
3

Ответы 3

Код if (td) проверяет, есть ли что-то в td, и это реально, так что ваша следующая строка не выдаст ошибку при поиске td.innerHTML.

td содержит данные для строки, и вы сопоставляете данные с некоторым фильтром. Что делать, если td не существует, вы получите ошибку undefined

документы

Метод Element.getElementsByTagName () возвращает живую HTMLCollection элементов с заданным именем тега.

Результатом является живая HTMLCollection найденных элементов в том порядке, в котором они появляются в поддереве. Если элементы не были найдены (в вашем случае, если есть <tr> без единственного <td> внутри), HTMLCollection пуст.

Если теперь вы получите пустой HTMLCollection, тогда метод innerHTML, который вы вызываете для следующей строки, приведет к следующей ошибке, и ваш код сломается.

"TypeError: td is undefined"

Другие вопросы по теме