自定义函数(p、a、c、k、e、d)有什么用?

新手上路,请多包涵

我看到很多网站的 JavaScript 代码中都有一些 function (p,a,c,k,e,d) 。不同的网站可能有这个函数的不同主体,但它们都使用相同的参数名称 (p,a,c,k,e,d) 。它是标准还是图书馆之类的?

其次,这个函数似乎应该在页面加载后立即执行。就像网站上的以下片段。

你能帮助我理解这段代码吗? eval() 用于评估类似 2+3 的表达式,但是下面的代码如何将函数传递给它?

 try{
        eval(
            function(p,a,c,k,e,d)
                {
                  //some code goes here
                }
    }catch(err){}

原文由 Naveen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 390
2 个回答

因此,如果您使用我在评论中发布的 http://matthewfl.com/unPacker.html ,它会将代码“解包”为:

 (function()
    {
    var b="some sample packed code";
    function something(a)
        {
        alert(a)
    }
    something(b)
}
)();

它似乎没有恶意。有关为什么要使用它的软性争论,请参阅 javascript packer vs minifier

Packed 较小但速度较慢。

甚至更难调试。

大多数众所周知的框架和插件只是缩小了。


Packer 所做的不仅仅是重命名变量和参数,它实际上使用 Base62 映射源代码,然后必须通过 eval() 在客户端重建才能使用。

在这里绕过 eval() 是一个邪恶的问题,当您开始打包更大的 JS 库(如 jQuery)时,这也会在页面加载期间在客户端上产生大量开销。这就是为什么只建议在生产 JS 上进行缩小,因为如果您有足够的代码需要进行打包或缩小,那么您就有足够的代码使 eval() 在页面加载期间阻塞客户端。


Minifier 只删除不必要的东西,比如空格字符,而 Packer 更进一步,尽其所能来最小化 javascript 的大小。例如,它将变量重命名为更小的名称。

原文由 user1508519 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是一个解压缩压缩/混淆的 javascript 代码的函数。许多 JS 库和脚本都使用它。

有一些在线工具可以通过浏览器打包和解包代码,这些工具使用了该功能。

原文由 flauntster 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏