我想你问的是不是类似UglifyJS之类的混淆过的JS代码?这种压缩通常会把变量、函数名之类的改成非常短的名称,因此这种压缩过的代码就难以识别了。
对于这种代码,推荐的思路是先看浏览器中是否有报错,然后根据错误来判断自己原始代码里可能出错的位置;如果没有报错,那也是断定大概的位置,然后Chrome里打开开发者工具里的Sources,打开自己的代码,用这个地方可以对代码进行重新排版:
当然,如果是uglify过的代码还是很难看,只能根据自己实际代码里的一些常量内容作为关键词在浏览器的代码里面搜自己可能的位置,然后加断点推测去调试。
上面的办法,都是在你对压缩JS这个过程没有控制的情况下,如果是你自己压缩JS代码,可以在压缩的时候同时生成sourcemap文件,一般是xxx.js.map文件。如果连同这个文件一起部署,那么在开发者工具中打开的时候,也可以看到最原始的代码了。这是最推荐的办法,调试起来也是最轻松的。
规范的js代码压缩后没有影响,体积会小很多。
不规范的js代码(如:少冒号,逗号.......等等),不压缩一般没问题,一旦压缩各种报错。
所以写代码尽量要规范。
一般压缩都经过混淆,如果你看到变量名都是A,B,C,D之类的无规则的命名,那就是被混淆过的,一般来说也很难阅读,就算你 还原了格式。如果是没有混淆的,你可以试试用js的格式化工具来重新格式化一下的,比如:
/* 美化:格式化代码,使之容易阅读 */
/* 净化:去掉代码中多余的注释、换行、空格等 */
/* 压缩:将代码压缩为更小体积,便于传输 */
/* 解压:将压缩后的代码转换为人可以阅读的格式 */
/* 混淆:将代码的中变量名简短化以减小体积,但可读性差,经混淆后的代码无法还原 */
/* 如果有用,请别忘了推荐给你的朋友: */
/* javascript在线美化、净化、压缩、解压:http://tool.lu/js */
/* 以下是演示代码 */
var Inote = {}
Inote.JSTool = function(options) {
this.options = options || {}
}
Inote.JSTool.prototype = {
_name: 'Javascript工具',
_history: {
'v1.0': ['2011-01-18', 'javascript工具上线'],
'v1.1': ['2012-03-23', '增加混淆功能'],
'v1.2': ['2012-07-21', '升级美化功能引擎'],
'v1.3': ['2014-03-01', '升级解密功能,支持eval,window.eval,window["eval"]等的解密'],
'v1.4': ['2014-08-05', '升级混淆功能引擎'],
'v1.5': ['2014-08-09', '升级js压缩引擎'],
'v1.6': ['2015-04-11', '升级js混淆引擎']
},
options: {},
getName: function() {return this._name},
getHistory: function() {
return this._history}
}
var jstool = new Inote.JSTool()