0

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

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.** 

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

4

1 回答 1

1

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

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

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

如果您在e.p1.sp2.ssp3整个函数中访问所有内容,请确保将其缓存。

于 2013-01-25T16:31:18.300 回答