将addEventListener的事件名存入变量节省体积是否为良好实践?
问题解答
是否属于良好实践?
- 算是值得考虑的实践,核心优势体现在两个层面:
- 维护性提升:如果后续需要替换事件类型(比如从
mousedown改为pointerdown适配多端),只需要修改变量的赋值语句,不用在104处代码逐一替换,大幅降低出错概率。 - 包体积优化:
"mousedown"是9个字符,用变量代替后,每次调用能减少7个字符的冗余,104次调用累计下来能节省一定的下载字节(如果项目未开启gzip压缩,这个优化的效果会更明显)。
- 维护性提升:如果后续需要替换事件类型(比如从
- 注意点:变量命名尽量兼顾简洁性和可读性,比如用
mouseDown代替md,避免团队协作时其他成员对短变量名产生歧义。
代码性能是否有所提升?
- 运行时性能无变化:JavaScript引擎会对重复字符串做池化优化,直接使用
"mousedown"和使用变量引用该字符串,在执行addEventListener时的效率完全一致,不会带来运行时的性能差异。 - 下载性能有微小提升:如上文所说,减少了冗余字符的传输量,尤其是在未开启压缩的场景下,能略微降低资源下载耗时;若项目已开启gzip/brotli压缩,重复字符串的压缩率极高,这个优化的实际收益会被弱化,但依然存在。
示例代码优化建议(兼顾可读性和简洁性):
const mouseDownEvent = 'mousedown'; element.addEventListener(mouseDownEvent, function(){});
内容的提问来源于stack exchange,提问作者y e n i m a l
相关产品推荐
相关产品推荐

