为什么不同的循环时间相同

时间:2014-07-30 13:57:23

标签: javascript

我在Chrome控制台上运行以下代码并获得不同的执行时间。

我创建了两个具有相同主体的函数。第一个是函数声明,第二个是函数 表达。

var t= new Date().getTime();
function fun1(){  
    for( i=0; i < 1000000; i ++) 
    {
        a=i;
     };
}; 
fun1();
console.log(new Date().getTime() - t);  // nearly 2ms;
t= new Date().getTime();
var fun2 = function (){  
    for(i=0; i < 1000000; i ++) 
    {
       a=i;
    };
 }; 
 fun2();
console.log(new Date().getTime() - t); //nearly 900ms

为什么同一循环的行为不同?

1 个答案:

答案 0 :(得分:0)

控制台代码包含在Google Chrome中的 with 语句中。

function fun1() { 
    // code
}

fun1是声明,它在

之外运行
var fun2 = function () {
    //code
}

fun2是表达式并且在V8

内运行不可优化

表达式和声明在“非控制台”模式下具有相同的性能:)