Во-первых, у вас присвоение к const
Во-вторых, я бы сделал как-то так:
let observer
function shittyFunction (HTMLElement) {
if (observer) {
observer.disconnect()
}
// Перезаписать старый новым, хоть и не понятно зачем
observer = new MutationObserver(() => {})
observer.observe( HTMLElement, { attributes: true })
}
Я не знаю, всей ситуации, но как по мне, тут какие-то архитектурные проблемы
Если по каким-то непонятным причинам вам запрещено выносить observer за пределы shittyFunction, можно использовать WeakMap
const map = new WeakMap()
function shittyFunction (HTMLElement) {
let observer = map.get(HTMLElement)
if (observer) {
observer.disconnect()
}
// Перезаписать старый новым, хоть и не понятно зачем
observer = new MutationObserver(() => {})
observer.observe( HTMLElement, { attributes: true })
map.set(HTMLElement, observer)
}
А ещё у вас может быть утечка памяти из-за замыкания в callback MutationObserver. Перепроверьте