比如下面这段代码 function t(t){for(var n,r,o=t[0],i=t[1],u=0,s=[];u<o.length;u++)r=o[u],Object.prototype.hasOwnProperty.call(a,r)&&a[r]&&s.push(a[r][0]),a[r]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);l&&l(t);while(s.length)s.shift()()}
浏览器上能正常运行的代码并不存在真正的加密,只是把语法和变量尽量混淆,让你看不出来函数是干什么的。现在的构建工具都支持或者已经集成了一些业界比较出名库或者插件,比如UglifyJS
比如下面这段代码
function t(t){for(var n,r,o=t[0],i=t[1],u=0,s=[];u<o.length;u++)r=o[u],Object.prototype.hasOwnProperty.call(a,r)&&a[r]&&s.push(a[r][0]),a[r]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);l&&l(t);while(s.length)s.shift()()}
光从代码上,你几乎没法了解是干什么的,变量代表什么意义也不清楚。但是呢,无论如何这段代码都需要遵循JS规范和标准,也就意味着,其实这些代码你要死磕的话,通过整个js文件的上下文,是可以大致搞明白的。关于反编译我不太了解是否能做到恢复源码,类似于SourceMap那样。