我在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
为什么同一循环的行为不同?
答案 0 :(得分:0)
控制台代码包含在Google Chrome中的 with 语句中。
function fun1() {
// code
}
fun1是声明,它在 块
之外运行var fun2 = function () {
//code
}
fun2是表达式并且在V8 下块
内运行不可优化表达式和声明在“非控制台”模式下具有相同的性能:)