【发布时间】:2017-07-26 09:49:57
【问题描述】:
假设我们在一个实现文件处理的对象中。我想编写代码以便于阅读。
很难判断返回类型的代码示例,尤其是当有多个嵌套函数调用时:
function create() {
return doCreateAction();
}
通过引入一个澄清变量,这个例子更具可读性:
function create() {
var fileHandle = doCreateAction();
return fileHandle;
}
理论上,第二个版本可以执行相同的操作,因为编译器无论如何都必须暂时存储 doCreateAction() 的结果(可能在一些隐藏的、匿名的、短暂的临时变量中)。分配给命名变量时,这段代码会变慢吗?
【问题讨论】:
-
"分配给命名变量时,这段代码是否变慢了?"您是否尝试过自己做一些基准测试?题外话。我想说你最好重命名你的函数:) 为什么
doCreateAction返回的东西更好地描述为fileHandle?为什么不叫它createFileHandle什么的。 -
在这样一个显而易见的案例中?如果他们不这样做,我会非常惊讶。我知道是这样吗?不,我没有检查所有主要 JavaScript 引擎的优化器代码(更不用说它们的所有变体;例如,V8 目前同时使用解释器和编译器,直到最近它才使用两个编译器)。跨度>
-
你想知道这个......为什么?
-
如果您担心性能问题,您可能需要查看UglifyJS、Closure Compiler、prepack 或类似工具。但不要牺牲代码的可读性。并避免微优化,例如您的问题。
-
const create = doCreateAction; // returns file handle? :-)
标签: javascript performance optimization self-documenting-code