3

我一直在一些网站上做一些维护工作(最初都是由不同的人开发的),我注意到很多这样的 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;
}

几分钟的努力可以提高可读性。

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;
}

我很好奇为什么 JavaScript 往往不以可读的方式编写?在我工作过的网站中——并且与最初的开发没有任何关系——精简、格式差和不可读的 JavaScript 绝对是我注意到的一种趋势。仅仅是为了减少脚本在页面上占用的空间量,还是只是技术不佳?

编辑:为了增加这个问题,为什么单字符变量名似乎也是常态?

PS我绝不是专家,事实上我几乎不精通JavaScript,所以如果有人也可以解释上面的代码实际上了什么,那么将不胜感激。

4

4 回答 4

9

有一些非常常用的工具可以获取 JavaScript 代码并删除不需要的空格并缩短变量名,从而生成这样的代码,或者更糟。它节省了网络带宽,并防止随意的外观阅读您的代码(由于默默无闻,安全性非常差。)

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

于 2012-08-03T11:23:41.687 回答
3

用于 Web 浏览器的 Javasicript 通常针对浏览器进行优化,而不是人类阅读器。在开发它时,您将其视为编译语言;当然,源代码的格式、注释等都很好,但这不是您提供的。实际工件已“缩小”以减少网络消耗。它可以在几百万次点击中对您的带宽账单产生重大影响。

所以你看到的代码不像作者看到的那样;您看到的是已编译可执行文件的道德等价物。

当然,大多数浏览器和服务器都支持在传输过程中自动对 Javascript 进行 gzip 压缩,这使得缩小的必要性比以前减少了。但它仍然是大多数 webdev 商店过程的一部分。

于 2012-08-03T11:29:50.250 回答
2

压缩 JS 会减少带宽使用,从而加快页面加载时间,尽管你应该只在发布时这样做,而不是对你的源 :(

js美化器会自动为你修复

于 2012-08-03T11:23:19.633 回答
0

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

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

您可以使用notepad++ 之类的工具 来制作最少的 javascript。

浏览器只需要相同的符号来运行代码,而不是人类语言中单词的意思。

于 2012-08-03T11:52:29.780 回答