我有足够多的功能,看起来像:
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代码库更小,我总能弄清楚什么是什么,在缓存是必须的任何情况下?
答案 0 :(得分:1)
基于深度(e.p1
vs e.p1.sp2.ssp3
)和使用频率的组合。更深入的子属性和任何子属性的高使用率都受益于缓存。
嵌套属性查找可能会变得昂贵,如果您要使用它,那么在执行查找一次后缓存该值很有价值。如果您多次访问链上的特定属性,这只会更有效,并且访问的越多,您从缓存中获益的就越多。
如果您只有一个级别(e.p1, e.p2, e.p3
),并且您只查找每个属性值一次,请不要打扰。
如果您在整个功能中访问e.p1.sp2.ssp3
,请务必将其缓存。