Javascript改进了原生的循环 [英] Javascript improved native for loop

查看:92
本文介绍了Javascript改进了原生的循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



  

我刚刚安装了Aptana Studio进行开发,其中一个可用的Javascript命令是插入for循环。 > for(var i = 0; i< Things.length; i ++){
Things [i]
};

另外一个选项是插入改进for循环,如下所示:

  for(var i = Things.length  -  1; i> = 0; i  - ){
Things [i]
};

为什么最后一个比第一个好?

for(var i = 0; i< thing .length; i ++){
Things [i]
};




  • A 执行一次在循环开始之前
  • 在每次迭代之前,B 被重新评估 ,如果不是这样,退出循环(因此它会在每一次迭代中检查 Things 的长度属性)。
  • C 每次迭代后执行



换句话说,你可能会牺牲部分可读性,所以坚持你发现的最具可读性 - 不是什么是最正确的性能明智。




< ($ i = 0; i< Things.length; i ++) {
事物[i] = null;
};

可以改写为:

  var i = 0; //(A)
while(true){
if(!(i< Things.length)){// B - 我们检查所有的时间长度
break;
}
事物[i] = null;
i ++; // C
}

  for(var i = Things.length  -  1; i> = 0; i  - ){
Things [i] = null;
};

可以改写为:

  var i = Things.length  -  1; //我们只检查一次
的长度(true){
if(!(i> = 0)){// B
break;
}
事物[i] = null;
i--; // C
}


I have just installed Aptana Studio for development and one of the available commands for Javascript is Insert a for loop like this:

for (var i=0; i < Things.length; i++) {
  Things[i]
};

Another option is Insert improved for loop like this:

for (var i = Things.length - 1; i >= 0; i--){
  Things[i]
};

Why this last one is better than the first one?

解决方案

//   (  A  )  (       B       )  (C)
for (var i=0; i < Things.length; i++) {
  Things[i]
};

  • A is executed once before the loop starts.
  • B is re-evaluated before every iteration, and if it's not true, it exits the loop (hence it checks the length property of Things on every single iteration.)
  • C is executed after every iteration

That said, the performance you get from changing the loop is minimal, and you risk sacrificing part of the readability, so stick with what you find most readable - not what is most correct performance-wise.


This might make more sense for you:

for (var i=0; i < Things.length; i++) {
    Things[i] = null;
};

could be rewritten as the following:

var i = 0; //A
while (true) {
    if (!(i < Things.length)) { //B - We check the length all the time
        break;
    }
    Things[i] = null;
    i++; //C
}

and

for (var i = Things.length - 1; i >= 0; i--){
    Things[i] = null;
};

could be rewritten as the following:

var i = Things.length - 1; //A - We only check the length once
while (true) {
    if (!(i >= 0)) { //B
        break;
    }
    Things[i] = null;
    i--; //C
}

这篇关于Javascript改进了原生的循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆