逗号运营商作为回报

时间:2013-01-28 20:53:21

标签: javascript comma-operator

我正在从一个页面阅读JS,这是我发现的(源代码由google chrome dev工具进行反混淆):

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

第一个逗号运算符操作数(a.replace())是否有一些技巧?

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

我错过了什么吗?

3 个答案:

答案 0 :(得分:9)

这不是comma operator,而是.replace调用的简单arguments list - 请注意括号。

你的反混淆器应该更好地缩进它:

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

顺便说一句,该功能可以用简单的字符串"\\$&"替换。

答案 1 :(得分:3)

没有逗号运算符。

请参阅replace

的文档
newstring = str.replace(regexp, function);

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

答案 2 :(得分:3)

它基本上正在做

a.replace(/([^\w\s\.\|`])/g, "\\$1");