为什么JavaScript代码编写得如此之难,以至于几乎是故意读的?

为什么JavaScript代码编写得如此之难,以至于几乎是故意读的?,javascript,formatting,Javascript,Formatting,我在几个网站上做了一些维护工作(所有网站最初都是由不同的人开发的),我注意到很多JavaScript代码如下: function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p

我在几个网站上做了一些维护工作(所有网站最初都是由不同的人开发的),我注意到很多JavaScript代码如下:

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
函数MM_findObj(n,d){//v4.01 变量p,i,x;如果(!d)d=document;如果((p=n.indexOf(“?”)>0&&parent.frames.length){ d=parent.frames[n.substring(p+1)].document;n=n.substring(0,p);}
如果(!(x=d[n])&&d.all)x=d.all[n];for(i=0;!x&&i压缩JS会减少带宽使用,从而加快页面加载时间,尽管您只应在发布时执行此操作,而不应对源执行此操作:(


将为您自动修复它

有一些非常常用的方法,可以使用JavaScript代码,删除不必要的空白,缩短变量名,生成这样或更糟的代码。它可以节省网络带宽,并防止随意观看的人阅读您的代码(由于模糊性,安全性非常差)


通常,当人们在编写代码时,代码看起来不是这样的;这只是在代码即将发布时完成的。

Javasicript for web浏览器通常是针对浏览器而不是人类读者进行优化的。在开发代码时,您将其视为编译语言;当然,源代码的格式、注释等都很好,但这就是问题所在不是你所交付的。实际的人造物已经被“缩小”以减少网络消耗。它可以在你的带宽账单上产生巨大的差异超过几百万次点击

因此,您看到的代码与作者看到的代码不同;您看到的是编译后的可执行文件的道德等价物


当然,大多数浏览器和服务器都支持在传输过程中自动压缩Javascript,这使得缩小的必要性大大降低。但对于大多数webdev商店来说,这仍然是过程的一部分。

如果您需要可读的Javascript来学习或构建代码,请使用原始网站的原始版本,d不要使用min版本,它很难阅读

然后,如果你想实现你的javascript代码,你可以制作或使用min版本来获得网络中的最佳性能。文件的大小确实不同。我认为这就是为什么程序员发布了两个版本的javascript

您可以使用一些工具,比如生成最少的javascript


浏览器只需要在运行代码时使用相同的符号,而不是人类语言中单词的平均值。

要将几分钟的工作量减少到1秒的工作量,请使用。更正:15秒的工作量(在本例中)因为您必须手动添加大括号,并且除了缩小之外,这可能是Dreamweaver或类似的东西发出的一些糟糕的代码。您可能会发现有趣的阅读。伙计,很遗憾jsbeautifier没有将大括号添加到内联块或适当地缩进它们。那么,保持预部署是否是一种好的做法呢(即格式良好、可读性好)站点根目录中某个目录中的代码,供未来工程师在执行维护时参考?“在站点根目录中某个目录中”?否。在源代码控制系统和/或内容管理系统中?是。@bobble14988——他说的!
function MM_findObj(name)
{
    var doc = document;
    var x;

    if((var p = name.indexOf("?")) > 0 && parent.frames.length != 0)
    {
        doc = parent.frames[name.substring(p + 1)].document;
        name = name.substring(0, p);
    }

    if(!(x = doc[name]) && doc.all)
    {
        x = doc.all[name];
    }

    for (var i = 0; !x && i < doc.forms.length; i++)
    {
        x = doc.forms[i][name];
    }

    for(var i = 0; !x && doc.layers && i < doc.layers.length; i++)
    {
        x = MM_findObj(name, doc.layers[i].document);
    }

    if(!x && doc.getElementById)
    {
        x = doc.getElementById(name);
    }

    return x;
}