Как правильно работать с DOM-элементами в JS?

Какие практики рекомендуется использовать при работе с элементами, чтобы в случае их отсутствия на странице код не "упал"? Например, есть следующий псевдокод:

async function getData() {
  const { hash } = window.location;

  if (!hash) return;

  const card = document.querySelector(`[data-id="${hash.substring(1)}"]`);

  if (!card) return;

  const { url } = card.dataset;

  if (!url) return;

  const response = await fetch(url);
  const data = await response.json();

  return data;
}

Это нормально использовать на каждом шаге проверки на наличие элемента, атрибута и т.д.? Может есть другие подходы? Использовать try...catch?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Свойство hash у объекта location всегда присутствует. Может быть пустой строкой.
querySelector вернет null если ничего не найдет.
Таким образом половину проверок можно заменить одним вопросительным знаком:

async function getData() {
    const url = document
        .querySelector(`[data-id="${window.location.hash.substring(1)}"]`)
        ?.dataset.url; // Вот здесь этот спасительный знак =)

    if (!url) return;

    const response = await fetch(url);
    const data = await response.json();

    return data;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы