【问题标题】:Comma operator in return逗号运算符作为回报
【发布时间】:2013-01-12 07:44:21
【问题描述】:

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

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

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

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

我错过了什么吗?

【问题讨论】:

  • 这是来自replace的回调

标签: javascript comma-operator


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    基本上就是这样

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

    【讨论】:

      【解决方案3】:

      没有逗号运算符。

      查看replace的文档

      newstring = str.replace(regexp, function);
      

      糟糕的格式让人难以阅读。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-30
        • 1970-01-01
        • 2010-10-04
        相关资源
        最近更新 更多