我经常最终做这样的事情:
var IDs = getArrayOfIDs();
IDs.forEach(function(ID){
var object = myObjects[ID];
// do stuff with object
});
据我了解,这会为object
数组中的每个ID
创建一个名为IDs
的私有变量。细
但我也可以这样做:
var IDs = Obj.getArray();
var object;
IDs.forEach(function(ID){
object = myObjects[ID];
// do stuff with object
});
现在我在父函数中使用了一个全局变量。有了,我不需要为每个ID创建一个新变量。
这是一个真正的优势(让我说我有一个非常大的阵列)或一般的坏主意吗?
答案 0 :(得分:6)
做什么是有意义的并且没有可能将代码拧到有问题的变量范围。如果object
仅在回调中使用,则在回调中创建它并将其范围限制为它。如果您不在室外需要,请不要在室外使用。按照你的逻辑,你将处理所有全局变量,这当然不是一个好主意。
由此:我不需要为每个ID创建一个新变量。
而你并不实际创建"一个新变量"。您的代码中只有var object
一次;那个一个变量。这个变量可以被重建/重写多次,但是它是一个逻辑变量。让Javascript引擎担心性能优化,除非你有一个非常明确的指示,即某些东西是实际的性能问题。
答案 1 :(得分:2)
您在优化什么?
缺点是:
此外,根据对象条目包含的内容,您可能只是创建对变量的引用。