我正在从一个页面阅读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,
部分完全是多余的,可以删除。
我错过了什么吗?
答案 0 :(得分:9)
这不是comma operator,而是.replace
调用的简单arguments list - 请注意括号。
你的反混淆器应该更好地缩进它:
return a.replace(/[^\w\s\.\|`]/g, function(b) {
return "\\" + b;
});
顺便说一句,该功能可以用简单的字符串"\\$&"
替换。
答案 1 :(得分:3)
答案 2 :(得分:3)
它基本上正在做
a.replace(/([^\w\s\.\|`])/g, "\\$1");