为什么有时候把代码压缩之后应用就不能正常运行了?

一段代码(其实是一个网页),用一个工具(我目前用的http://dean.edwards.name/packer/)去掉了所有的空格和注释,但是呢,去掉之后的代码,理论上是可以正常运行的,为什么有时候,压缩之后的css,html,javaScript代码就不能正常运行了?

原谅我这么问问题。

阅读 8.6k
5 个回答

代码压缩不外乎就是去掉了多余的空格,换行符等字符的方式,那么既然是去掉了一些东西,在某些情况下,出现问题也是能够理解的吧。举个例子,假如你Html页面有个ul列表,你js中直接获取它的childrenNods,其中就是包含了空格符和换行符,然后你后面有有一个方法,就是去掉这些空白符合换行符的,结果你html压缩了,没有空白和换行符了,就会报错。这,你能理解吗?具体问题,你还得具体分析一下,如果你非要压缩,哪里出了问题,再相应做修改就是了。还有就是,压缩的时候,最好把css样式,js,和html分开来压缩,不然也容易出问题

原谅我 没遇到过。
看了 楼下大神的评论 我还是忍不住想再说两句
确实
大神说的很对
虽然我没有遇到过这个问题
但是由于早上回答了一个childNodes的问题
还是想说一下
html中要获取节点尽量不要用能获取文本节点或者一些别的节点的方法
实在不可取 一压缩就死翘翘了(——
还是js
命名尽量规范些 不要写个a啊 b啊 c啊 的(%——%)
js混淆压缩一般会把tab()名称压缩为t()
所以 如果你某个地方正好写了个t()
那就又死翘翘了

首先保证良好的代码书写习惯.
举个栗子:

var test=function(a){
    alert(a)
    return function(c){
        alert(c)
    }
}
(function(b){
    console.log(b)
})(1)

这段代码的执行结果.
但实际上期望的是只输出立即调用函数.所以需要在一些地方加上分号.

var test=function(a){
    alert(a)
    return function(c){
        alert(c)
    }
};
(function(b){
    console.log(b)
})(1);

所以如果需要压缩代码 一般外链的js前面都会加上;

贴出压缩后的地址,这样谁知道你那里错了。。

代码规范很重要

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