我经常以这样的方式结束:
var IDs = getArrayOfIDs();
IDs.forEach(function(ID){
var object = myObjects[ID];
// do stuff with object
});
据我所知,这会为我的 IDs
数组中的每个 ID
创建一个名为 object
的私有(private)变量。很好。
但我也可以这样做:
var IDs = Obj.getArray();
var object;
IDs.forEach(function(ID){
object = myObjects[ID];
// do stuff with object
});
现在我在我的父函数中使用一个全局变量。这样一来,我不需要为每个 ID 创建新变量。
这是一个真正的优势(假设我有一个非常大的阵列)还是一个坏主意?
最佳答案
做最有意义的事情,并且不可能用有问题的变量范围来搞砸你的代码。如果 object
仅在回调内部使用,则在回调内部创建它并将其范围限制在其中。如果你在外面不需要它,就不要让它在外面可用。按照您的逻辑,您将使用所有全局变量,这当然不是一个好主意。
And with that: I don't need to create a new variable for every ID.
而且您实际上并没有创建“一个新变量”。您的代码中只有一次 var object
;那是一个变量。这个变量可能会被重新创建/覆盖多次,但它是一个逻辑变量。让 Javascript 引擎担心性能优化除非你有一个非常明确的指示表明某些东西是实际的性能问题.
关于javascript - var at 循环的最佳用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17007714/