Недоверенный пользовательский ввод → только textContent (или безопасное построение DOM). Присвоение произвольной строки в innerHTML — классический XSS. HTML — только если доверенный/санитизированный.
Смежные API
innerText учитывает стили/видимость, дороже; для данных чаще textContent.
Для одного текстового узла без HTML — textContent достаточно.
Итог: разметка → осторожный innerHTML; обычный текст и недоверенные данные → textContent.
В чём разница между `innerHTML` и `textContent`? · Sobeso