在不同的地方,数组中的元素正在索引中使用。 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);
}
答案 0 :(得分:1)
示例2不需要进行多个数组查找,因此会稍快一些。 话虽如此,JIT很可能会为你提升。
在我看来,示例2更易读,因此更容易维护,所以我会继续使用它。
同样R3tep所述,您可以使用col.Type
和col.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毫秒。