为什么我必须将替换函数放在str.replace语句中?
这很好用:
str = str.replace(/&|<|>|"|'/g, function replacer(match) {
switch (match) {
case "&":
return "&";
case "<":
return "<";
case ">":
return ">";
case '"':
return """;
case "'":
return "'";
}
});
这不起作用,返回“引用错误:未定义匹配”:
str = str.replace(/&|<|>|"|'/g, replacer(match));
function replacer(match) {
switch (match) {
case "&":
return "&";
case "<":
return "<";
case ">":
return ">";
case '"':
return """;
case "'":
return "'";
}
}
为什么我无法将replacer()作为外部函数调用?传递参数对于其他函数来说是轻而易举的,但在此上下文中并不是这样 - 来自str.replace语句。只是好奇,如果允许好奇心。此外,它让我感到烦恼......谢谢!
(在发布之前搜索并双处搜索答案)
答案 0 :(得分:1)
这样称呼:
str = str.replace(/&|<|>|"|'/g, replacer);
表示您传递函数,而不是函数调用结果。
答案 1 :(得分:0)
应在使用前创建回调函数
function replacer(match) {
switch (match) {
case "&":...
}
}
str = str.replace(/&|<|>|"|'/g, replacer(match));