В чем разница между атрибутом и свойством

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

Ответ

Атрибуты (attributes) — это HTML-разметка, которая задаётся в тегах. Они всегда строки и неизменяемы после рендеринга.

Свойства (properties) — это значения DOM-элементов в JavaScript. Они могут быть любого типа и изменяемы динамически.

Пример:

<input id="input" value="Привет"> <!-- value — атрибут -->
const input = document.getElementById('input');
console.log(input.getAttribute('value')); // 'Привет' (атрибут)
input.value = 'Мир'; // меняем свойство
console.log(input.value); // 'Мир' (свойство)
console.log(input.getAttribute('value')); // 'Привет' (атрибут не изменился)

Атрибуты влияют на начальное состояние, свойства — на текущее.