本地变量使用推理

时间:2013-01-25 16:17:40

标签: javascript

我有足够多的功能,看起来像:

var functionName = function(e) {
  // 
};

其中所有参数都传入单个容器e。大多数时候,值是简单值(无函数),例如:

{ parameter1: 1, parameter2: "Name", parameter3:{ subParameter1: "A"}}

但有时我会传递函数:{ p2:function(){...} }

在使用参数值时我有两个选择:

选项1:从e开始获取链中的参数值:e.parameter1,e.parameter3.subParameter1等。

选项2:使用缓存的参数值:

var parameter1 = e.parameter1;
var subParameter1 = e.parameter3.subParameter1;

第二个选项提高了可读性,但增加了变量的数量和代码库的大小。另一方面,当使用长链时,它会更干燥,即e.p1.p2.p3等。

我应该使用什么推理来选择这两种选择?

**Update 1 - the question sounds quite subjective, let me re-prase it.** 

我不介意一直使用链,没有本地vars代码库更小,我总能弄清楚什么是什么,在缓存是必须的任何情况下?

1 个答案:

答案 0 :(得分:1)

基于深度(e.p1 vs e.p1.sp2.ssp3)和使用频率的组合。更深入的子属性和任何子属性的高使用率都受益于​​缓存。

嵌套属性查找可能会变得昂贵,如果您要使用它,那么在执行查找一次后缓存该值很有价值。如果您多次访问链上的特定属性,这只会更有效,并且访问的越多,您从缓存中获益的就越多。

如果您只有一个级别(e.p1, e.p2, e.p3),并且您只查找每个属性值一次,请不要打扰。

如果您在整个功能中访问e.p1.sp2.ssp3,请务必将其缓存。