避免字符串和硬编码的函数名称 - 优点?

时间:2017-04-03 18:24:28

标签: javascript

我最近遇到了一个JavaScript脚本,其中作者似乎试图避免代码中的字符串并将所有内容分配给变量。

所以而不是

document.addEventListener('click', (e) => { /*whatever*/ });

他会写

var doc = document;
var click = 'click';
var EventListener = 'EventListener';
var addEventListener = `add${EventListener}`;
doc[addEventListener](click, (e) => { /*whatever*/ });

虽然将document缓存到变量中可以被视为微观优化,但我真的很想知道这种做法是否还有其他好处 - 可测性,速度,维护等等?

传统的IE attachEvent应该已经死了,因此能够快速使脚本仅在这些环境中运行,我认为很难被视为优势。

1 个答案:

答案 0 :(得分:1)

你给出的例子看起来很奇怪,我无法想象大多数这些动作的任何“良好练习”理由。我的第一个猜测是,这是一个不确定他们在做什么的人的工作,虽然他们也使用ECMAScript 6语法很奇怪。

另一种可能性是这是生成的代码(例如某种可视编程工具的输出,或者是缩小器)。在这种情况下,通常会看到这种过度的因子分解,因为代码是从保守编写的模板生成的,以防止错误;我正在考虑C中的预处理器宏如何自由地使用括号。

有时,变量声明的编写方式使编译器和/或读取器清楚地知道变量包含哪种类型的数据。例如,asm.js代码使用不必要的变量声明作为在常规JS上实现强类型变量的技巧。有时候声明是作为一种形式的文档编写的(如果你看到foo,可能会告诉 var foo = 0.0是一个弧度角,因为否则作者会刚写过var click='click')。但这仍然无法解释{{1}}。

之类的内容
相关问题