繁体   English   中英

var at循环的最佳用法

[英]Best usage of var at loops

我经常最终会做这样的事情:

var IDs = getArrayOfIDs();

IDs.forEach(function(ID){
    var object = myObjects[ID];
    // do stuff with object
});

据我了解,这会为我的IDs数组中的每个ID创建一个称为object的私有变量。 精细。

但是我也可以这样:

var IDs = Obj.getArray();
var object;

IDs.forEach(function(ID){
    object = myObjects[ID];
    // do stuff with object
});

现在,我在父函数中使用了全局变量。 这样, 我不需要为每个ID创建一个新变量。

这是一个实际的优势(比如说我有很多优势)还是一个坏主意?

做最有意义的事情,并且不可能将代码与问题变量范围搞混。 如果object仅在回调内部使用,则在回调内部创建object并将其范围限制为它。 如果您在外面不需要它,请不要在外面使用它。 按照您的逻辑,您将使用所有全局变量,但这当然不是一个好主意。

这样:我不需要为每个ID创建一个新变量。

而且您实际上并没有创建“新变量”。 您的代码中只有一次var object 那是一个变量 可以多次重新创建/覆盖此变量,但这是一个逻辑变量。 让Javascript引擎担心性能优化, 除非您有非常清楚的指示,表明某些问题是实际的性能问题。

您正在优化什么?

缺点是:

  • 在范围堆栈中查找变量要比查找局部变量慢一点
  • 由于变量将被共享,因此如果您需要在循环闭包内部的函数中使用它,则可能会遇到一些问题
  • 如果该变量的生存期不超过您所看到的,它将立即被垃圾回收。

另外,根据对象条目包含的内容,您可能只是创建对变量的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM