记一次 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 这个属性吧。