const d = document.createElement("div")
d.textContent = "<&>"
d.innerHTML
// "<&>"
d.innerHTML = "</div>"
d.outerHTML
// "<div></div>"
script の場合
const s = document.createElement("script")
s.textContent = "<&>"
s.innerHTML
// "<&>"
s.innerHTML = "</script>"
s.outerHTML
// "<script></script></script>"
innerHTML と textContent が一緒でエスケープされないから outerHTML を出力するとおかしなことになる