В чем разница между querySelector и getElementById, getElementByClassName

«В чем разница между querySelector и getElementById, getElementByClassName» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

querySelector возвращает первый элемент, соответствующий CSS-селектору, а querySelectorAll — все элементы. getElementById ищет по ID, getElementsByClassName — по классу (возвращает живую коллекцию).

Ключевые отличия:

  • querySelector универсален (любые CSS-селекторы)
  • getElementById быстрее для поиска по ID
  • getElementsByClassName возвращает живую коллекцию (изменяется при DOM-мутациях)
  • querySelectorAll возвращает статичный NodeList

Пример:

// Все варианты вернут один и тот же элемент
document.querySelector('#header'); 
document.getElementById('header');

// Но querySelector гибче:
document.querySelector('.menu-item.active');