我搜索了这个问题,但答案我没有解决我的问题。这是我的问题,我有一个有10名成员的阵列。
Js代码
var array = [1,2,3,4,5,6,7,8,9,10];
循环1:
for(var i=0,len=array.length;i<len;i++){};
循环2
var len = array.length;
for(var i=0;i<len;i++){};
循环3
for(var i=0;i<array.length;i++){}
我知道1和3之间存在重大的性能差异。但是,1和2之间是否有任何性能差异? 。
答案 0 :(得分:0)
不,没有任何区别。 Javascript将提升变量。
所以code1将是:
var i, len;
for (i=0, len=array.lengh; i<len; i++) {};
code2将是
var i, len;
len = array.lengh;
for (i=0; i<len; i++) {};
不同之处仅在于放置len=array.length
答案 1 :(得分:0)
虽然解析逻辑在示例2中还有一个要解析的令牌,但应该没有任何明显的区别。
越短越好:var a,b,c,d;
应该比
var a; var b; var c; var d;
答案 2 :(得分:0)
Loop-1和Loop-2都是相同的,因为有一次初始化var len 所以没有性能差异。
答案 3 :(得分:0)
Javascript具有函数范围,而不是块范围(不包括新的let
语法)。由于for循环不是函数,因此它不会创建新范围,这意味着
for (var i...) { ... }
与
完全相同var i...
for (...) { ... }
然而,在javascript中每次迭代都会重新评估for循环的条件语句,这意味着
for(var i=0;i<array.length;i++){}
需要多次评估array.length
,而这
var len = array.length;
for(var i=0;i<len;i++){};
一次评估一次。从理论上讲,它更快,但它是一个微观优化,它并不重要。