0

我正在从一页阅读 JS,这就是我发现的(源代码已被 google chrome 开发工具反混淆):

var db = function(a) {
    return a.replace(/[^\w\s\.\|`]/g, 
    function(b) {
        return "\\" + b
    })
};

第一个逗号运算符操作数(那个a.replace())有什么技巧吗?

从我的角度来看,这a.replace(/[^\w\s\.\|``]/g,部分是完全多余的,可以删除。

我错过了什么吗?

4

3 回答 3

9

它不是逗号运算符,而是一个简单的调用参数列表.replace- 注意括号。

你的去混淆器最好应该像这样缩进它:

return a.replace(/[^\w\s\.\|`]/g, function(b) {
    return "\\" + b;
});

顺便说一句,该函数可以替换为简单的 string "\\$&"

于 2013-01-28T20:56:03.533 回答
3

没有逗号运算符。

请参阅替换文档

newstring = str.replace(regexp, function);

糟糕的格式使其难以阅读。

于 2013-01-28T20:56:19.907 回答
3

基本上是在做

a.replace(/([^\w\s\.\|`])/g, "\\$1");
于 2013-01-28T20:57:47.430 回答