我已经在一些网站(最初由不同的人开发)上做了一些维护工作,我注意到了很多像这样的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绝对是我注意到的趋势。它只是为了减少脚本在页面上占用的空间量,还是仅仅是糟糕的技术?
编辑:要添加到这个问题,为什么单个字符变量名称似乎也是常态?
P.S。我绝不是一名专家,事实上我几乎不会精通JavaScript,所以如果有人也可以解释上面的代码实际上做了什么,那么我们将非常感激。
答案 0 :(得分:9)
有一些非常常用的tools可以使用JavaScript代码并删除不需要的空格并缩短变量名称,从而生成这样的代码,或者更糟。它可以节省网络带宽,并且可以随意查看代码(由于默默无闻,安全性很差)。
通常,当人们正在处理代码时,代码看起来并不像这样;这只是在代码即将发布时完成的。
答案 1 :(得分:3)
Javasicript for web browsers通常针对浏览器而非人类读者进行优化。在开发它时,您将其视为编译语言;确定,源代码格式良好,评论等等,但这不是你提供的。实际的工件已经“缩小”以减少网络消耗。它可以使你的带宽费用在几百万次点击中产生很大的差异。
所以你没有按照作者看到的方式看到代码;你看到了已编译的可执行文件的道德等价物。
当然,大多数浏览器和服务器都支持自动gzipping传输中的Javascript,这使得缩小比以前更少的必要。但它仍然是大多数webdev商店的过程的一部分。
答案 2 :(得分:2)
压缩JS会减少带宽使用量,从而加快页面加载时间,尽管您应该只在发布时执行此操作,而不是在源代码中执行此操作:(
js beautifier会自动为您修复
答案 3 :(得分:0)
如果您需要可读的javascript来学习或构建代码,请使用原始网站的原始版本,不要使用min版本,这很难阅读。
然后,如果你想实现你的javascript代码,你可以制作或使用min版本来获得网络中的最佳性能。文件的大小确实不同。我认为这就是程序员发布两个版本的javascript的原因。
您可以使用notepad++等工具制作最少的JavaScript。
浏览器只需要使用相同的符号来运行代码,而不是人类语言中的单词的意思。