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