javascript中的索引访问与变量

时间:2016-04-12 15:21:16

标签: javascript arrays

在不同的地方,数组中的元素正在索引中使用。 Instinct说用一个指向该元素的变量替换它并使用它。但除了更好的可读性/管理之外还有其他区别吗?

示例1:

if (cols[i]["Type"] === 4) {
    this.someFunc(cols[i]["Name"], cols[i]["Value"].VarA, cols[i]["Value"].VarB);
} 

示例2:

var col = cols[i];
if (col["Type"] === 4) {
    this.someFunc(col["Name"], col["Value"].VarA, col["Value"].VarB);
} 

2 个答案:

答案 0 :(得分:1)

示例2不需要进行多个数组查找,因此会稍快一些。 话虽如此,JIT很可能会为你提升。

在我看来,示例2更易读,因此更容易维护,所以我会继续使用它。

同样R3tep所述,您可以使用col.Typecol.Value.VarA来进一步提高可读性。

答案 1 :(得分:1)

在我看来,直接通过变量引用值比通过数组元素引用值更快:

https://jsfiddle.net/cLf7k35n/

var test = 4;
var myArray = [0, 1, 2, 3, 4];

console.time("array_reference");
if (myArray[4] === 4) {
  console.log(myArray[4]);
}
console.timeEnd("array_reference");

console.time("variable_reference");
if (test === 4) {
    console.log(test);
}
console.timeEnd("variable_reference");

检查控制台是否有计时器。在我所做的具体的非复杂示例中,数组引用似乎至少慢了1.2毫秒。