var的最佳用法

Rie*_*u͢s 1 javascript design-patterns

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

var IDs = getArrayOfIDs();

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

据我所知,这会objectID我的IDs数组中的每个内部创建一个私有变量.精细.

但我也可以这样做:

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

IDs.forEach(function(ID){
    object = myObjects[ID];
    // do stuff with object
});
Run Code Online (Sandbox Code Playgroud)

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

这是一个真正的优势(假设我有一个非常大的阵列)或一般的坏主意?

dec*_*eze 6

有意义的事情,并且没有可能将代码拧到有问题的变量范围.如果object仅在回调中使用,则在回调内创建它并将其范围限制为它.如果您在室外不需要,请不要在室外使用.根据你的逻辑,你将使用所有全局变量,这当然不是一个好主意.

而且:我不需要为每个ID创建一个新变量.

而你实际上并没有创造"一个新的变量".你var object的代码中只有一次; 这是一个变量.可以多次重新创建/覆盖此变量,但它是一个逻辑变量.让Javascript引擎担心性能优化,除非你有一个非常明确的指示,表明某些事情是实际的性能问题.