<script> var n=200000; var condition=true; var DoSomething=function(){}; var d1=new Date(); for (var i=0;i <n;i++) { if(condition) DoSomething(); else DoOtherthing(); } var d2=new Date(); if(condition) { for (var i=0;i <n;i++) DoSomething() } else { for (var i=0;i <n;i++) DoOtherthing(); } var d3=new Date(); alert((d2-d1)+":"+(d3-d2)); </script>
只是一的写法简单点
-----------------
---------
condition是定的
<script>
var n=200000;
var condition=true;
var DoSomething=function(){};
var d1=new Date();
for (var i=0;i <n;i++)
{
if(condition)
DoSomething();
else
DoOtherthing();
}
var d2=new Date();
if(condition)
{
for (var i=0;i <n;i++)
DoSomething()
}
else
{
for (var i=0;i <n;i++)
DoOtherthing();
}
var d3=new Date();
alert((d2-d1)+":"+(d3-d2));
</script>
1走了n遍循环,n遍判断
2走了n遍循环,1遍判断
2的效率比较高一点点
确实如楼上各位所说,后者节省了n-1次判断
f1是先循环,后作判断。判断时,循环被打断。所以效率会较f2要低。
f2是先判断,后循环。。效率比f1高。
f1是先循环,后作判断。判断时,循环被打断。所以效率会较f2要低。
f2是先判断,后循环。。效率比f1高。
==============================
循环被打断 虾米意思啊?
如果它是判断完IF后再判断ELSE那就是二效能更好一些,当然也是指这个执行的循环次数足够多的情况下。
如果DOSOMETHING会改变这个CONDITION的话...所以还是要看情况的..不过2就比1少了N-1 次判断.但是比1多了遍循环.在实际中没什么速度上的区别...论简洁的话当然是1了,可是2更适合实用.
所以觉得2会好一点