不要说太多,直接测试代码。
复制代码代码如下所示:
VaR AA ={姓名:'cola项目:{ { 11 },{年龄:年龄:22 },{ 23 },{年龄:年龄:23 } } };
VAR现在=新的日期()GetTime();
对于(var i = 0;i < 100000;i + +){
var a = eval((AA +));

}
VaR说话=新的日期()GetTime();
document.write(eval时间:+(说话-现在)+ );


VaR的当下=新的日期()GetTime();
对于(var i = 0;i < 100000;i + +){
新函数();
(FN);
}
无功now3 =新的日期()GetTime();
document.write(新功能:+(now3 -当下)+ );

FF测试结果如下
/ /评估时间:979
新功能时间为:1372

在IE8的效果 / /如下试验结果
/ /评估时间:913
新功能时间为:1037

Chrome效果测试结果如下
/ /评估时间:211
新功能时间为:251

在Opera的测试结果之后
/ /评估时间:384
新功能时间为:1024

测试结果是不同浏览器的参考数据。很奇怪为什么每个浏览器-当测试。我们需要收养他吗

首先,别担心。看看下一步。带着这些问题和好奇心,我又进行了一次测试。在这个时候,我会做一个动态的涵洞进行评价和新功能的执行,看看效果。
复制代码代码如下所示:
无功testeval =功能(obj){
返回eval(0,+目标+);
/ /返回eval('(' +对象+);
};

无功testfun =功能(obj){
var fn =新功能(回归+ obj);
(FN);
};

VAR现在=新的日期()GetTime();
对于(var i = 0;i < 1000;i + +){
var fn = testeval(功能测试(){ document.write(我有一头小毛驴,从来也不骑…);});
(FN);
}
VaR说话=新的日期()GetTime();
document.write();
document.write(eval时间:+(说话-现在)+ );

VaR的当下=新的日期()GetTime();
对于(var i = 0;i < 1000;i + +){
testfun(document.write(我有一头小毛驴,从来也不骑…););
}
无功now3 =新的日期()GetTime();
document.write(新功能:+(now3 -当下)+ );

FF测试结果如下
/ /评估时间:495
新功能时间为:50

在IE8的效果 / /如下试验结果
/ /评估时间:34
新功能时间为:20

Chrome效果测试结果如下
/ /评估时间:7
新功能时间为:4

在Opera的测试结果之后
/ /评估时间:7
新功能时间为:18

对于测试的结果,如果我们建立一个动态的执行,它将eval执行FF是超慢。其他浏览器之间没有什么区别。我们不必走得太远。
返回eval(0,+目标+);也许你认为这是什么0,加0主要是兼容所有浏览器,如果没有,以下版本的IE9将是错误的。
但真正的0意味着我不知道如何解剖它,只知道,这除了可以解决不相容问题的恶心的IE浏览器。
经过以上两个栗子,如果是在eval转换成json是明显更快,如果要快汉新功能的动态分析,这里说的两个优点和缺点,有eval的兼容性不是很好,如果错了,可能会导致其他的JS脚本不执行,
后者不会,他只会给这个函数,我不喜欢太麻烦,而放弃eval取代它的新功能。如果有不明白的地方,请大家指正,欢迎拍砖。