外部替换功能不起作用

时间:2016-01-28 13:08:41

标签: javascript replace str-replace

为什么我必须将替换函数放在str.replace语句中?

这很好用:

str = str.replace(/&|<|>|"|'/g, function replacer(match) {
switch (match) {
  case "&":
    return "&amp;";
  case "<":
    return "&lt;";
  case ">":
    return "&gt;";
  case '"':
    return "&quot;";
  case "'":
    return "&apos;";
}
});

这不起作用,返回“引用错误:未定义匹配”:

str = str.replace(/&|<|>|"|'/g, replacer(match));

function replacer(match) {
switch (match) {
  case "&":
    return "&amp;";
  case "<":
    return "&lt;";
  case ">":
    return "&gt;";
  case '"':
    return "&quot;";
  case "'":
    return "&apos;";
}
}

为什么我无法将replacer()作为外部函数调用?传递参数对于其他函数来说是轻而易举的,但在此上下文中并不是这样 - 来自str.replace语句。只是好奇,如果允许好奇心。此外,它让我感到烦恼......谢谢!

(在发布之前搜索并双处搜索答案)

2 个答案:

答案 0 :(得分:1)

这样称呼:

str = str.replace(/&|<|>|"|'/g, replacer);

表示您传递函数,而不是函数调用结果。

答案 1 :(得分:0)

应在使用前创建回调函数

function replacer(match) {
    switch (match) {
      case "&":...
    }
}
str = str.replace(/&|<|>|"|'/g, replacer(match));