这个字符串替换功能的目的是什么?

时间:2012-05-05 14:07:10

标签: javascript replace

在浏览Remy Sharp的Simple Drag and Drop演示的源代码时,我发现了这个功能:

function entities(s) {
  var e = {
    '"' : '"',
    '&' : '&',
    '<' : '<',
    '>' : '>'
  };
  return s.replace(/["&<>]/g, function (m) {
    return e[m];
  });
}

从我看到的,它只是替换“或&amp;或&lt;或&gt;与自身。所以不需要该功能。

我怎么错?

更新 点击页面末尾的“查看来源”即可查看来源。

5 个答案:

答案 0 :(得分:2)

我不知道你在哪里看过它(我在你给的网站上找不到它),但你可能误读了这个功能,或者在浏览器进行了某种解析之后读了它。

该功能最有可能将<&gt;&&amp;一起复制。因为您已通过浏览器看到它,所以浏览器将实体替换回原始字符,从而产生< : <等。

如果这确实是原始函数并且没有错误,则此函数不执行任何操作。

答案 1 :(得分:2)

我使用Ctrl+U在Chrome中查看了该页面的来源,这就是我发现的内容:

function entities(s) {
  var e = {
    '"' : '&quot;',
    '&' : '&amp;',
    '<' : '&lt;',
    '>' : '&gt;'
  };
  return s.replace(/["&<>]/g, function (m) {
    return e[m];
  });
}

这显然有所作为 - 也就是说,它用转义形式替换特殊字符。

您看到自己所做的事情的原因是您在“查看来源”页面上查看的来源正在HTML 中呈现。因此,当源“&quot;字符串在”查看源“页面上呈现时,它会在HTML页面上显示为"。 HTML5Deoms确实应该在&amp;quot;这样的视图源页面上转义&符号,以便它在&quot;上正确显示在渲染的源页面上,但它们不会这样做。

答案 2 :(得分:1)

你是对的。这个功能什么都不做。

答案 3 :(得分:1)

我查看了源代码,它说:

function entities(s) {
  var e = {
    '"' : '&quot;',
    '&' : '&amp;',
    '<' : '&lt;',
    '>' : '&gt;'
  };

它正在转义特殊字符,因此可以看到HTML标记和源代码,而不是解释为HTML。

答案 4 :(得分:0)

我不知道你在哪里找到了这个功能,但我觉得真相是对的。 这就是我发现的

    function entities(s) {
  var e = {
    '"' : '&quot;',
    '&' : '&amp;',
    '<' : '&lt;',
    '>' : '&gt;'
  };
  return s.replace(/["&<>]/g, function (m) {
    return e[m];
  });
}