记一次 JS 代码压缩后产生的 Bug

最近遇到了个平时很少遇到的 Bug,理论上代码压缩混淆后大多数都不会存在问题(之前确实没有遇到),但是最近却不小心给遇到了。 大概在测试的时候,没有混淆前,代码是可以正确执行的,但是混淆后,代码就出现部分 JS 未顺利执行的情况。然后通过代码一步步调试,发现,在进行混淆的时候,会把一些变量命名转化成类似字幕 a, b, c等这样。然后这次在组件注册的时候,比较偷懒,用了 Function.name 来代表注册组件的名称,而不是独立命名。 自己在 ES6 偷懒这样写了: import PlayComponent from './play-component'; // ... ui.register(PlayComponent); // register 的实现 ui.register = function(func) { const name = func.name; } 这样就导致在压缩的时候的 传入的参数会变成 t 这样就会知道命名失效,始终都是 t 。 所以在实现的时候尽量少用 Function.name 详情 »