javascript - 为什么 JavaScript 代码写得几乎刻意难读?

标签 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);}
  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 绝对是一种趋势。仅仅是为了减少脚本在页面上占用的空间量还是只是技术不好?

编辑:要补充这个问题,为什么单字符变量名称似乎也是常态?

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

最佳答案

有很常用的tools它采用 JavaScript 代码并删除不需要的空格并缩短变量名,生成这样的代码,或者更糟。它节省了网络带宽,并防止随意的 lookie-loos 阅读您的代码(晦涩难懂的安全性非常差。)

通常情况下,当人们在处理代码时,代码看起来并不是这样的;这只是在代码即将发布时完成的。

关于javascript - 为什么 JavaScript 代码写得几乎刻意难读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794741/

相关文章:

javascript - 按 ID 删除一行中的特定 DIV

python - 轻松漂亮地打印花车?

javascript日期转换显示错误的月份

javascript - 在 javascript 中重新加载 div 在 div 中加载完整页面

javascript - .class 选择器不工作

javascript - Chai 单元测试-expect(42).to.be.an ('integer')

C - 使用 fscanf 从文件中读取十六进制和字符

formatting - 如何在 Maxima 中格式化 Fortran 输出

python - 在 Python Shell 中将文本格式化为框

javascript - 阻止 <div> 以避免与内容交互