为什么html转义中&符号要先转义?

use*_*711 0 html javascript escaping

如果不首先转义 & 符号,为什么类似的转义代码不适用于 html 元素中的 html 转义?当我把 & 放在第一位后,一切正常。

  function escapeHtml(unsafe) {
            return unsafe
                 .replace(/&/g, "&")
                 .replace(/</g, "&lt;")
                 .replace(/>/g, "&gt;")
                 .replace(/"/g, "&quot;")
                .replace(/'/g, "&#039;");
     }
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*c B 5

考虑会发生什么:

This sentence has an <html> tag in it
Run Code Online (Sandbox Code Playgroud)

如果你<>先进行替换,你最终会得到

This sentence has an &lt;html&gt; tag in it
Run Code Online (Sandbox Code Playgroud)

然后你进行&替换,并得到

This sentence has an &amp;lt;html&amp;gt; tag in it
Run Code Online (Sandbox Code Playgroud)

现在您的&lt;&gt;已损坏,因为<>字符已被双重编码。

如果你&先编码,事情就会“正常工作”。