Javascript中函数嵌套定义给我们开发带来了很多便利,但是他的效率怎么样呢? 我做了一个简单的测试。
代码如下 |
复制代码 |
//test
function func1(a, b) {
return (function(a, b){
return (function(a, b){return a+b})();
})();
}
function func2(a, b)
{
var nest1 = function(a, b)
{
var nest11 = function(){
return a+b;
}
return nest11(a+b);
}
return nest1(a,b);
}
function func3(a, b) {
function nest1(a, b){
function nest11(a, b){
return a+b;
}
return nest11(a, b);
}
return nest1(a, b);
}
function nest44(a, b){
return a+b;
}
function nest4(a, b){
return nest44(a, b);
}
function func4(a, b) {
return nest4(a, b);
}
console.time("start1");
for(var i=0; i<1000000; i++) {
func1(1,1);
}
console.timeEnd("start1");
console.time("start2");
for(var i=0; i<1000000; i++) {
func2(1,1);
}
console.timeEnd("start2");
console.time("start3");
for(var i=0; i<1000000; i++) {
func3(1,1);
}
console.timeEnd("start3");
console.time("start4");
for(var i=0; i<1000000; i++) {
func4(1,1);
}
console.timeEnd("start4");
|
本代码用nodejs看执行,得到如下的结果:
# node test2.js
start1: 190ms
start2: 78ms
start3: 58ms
start4: 11ms
如果一个函数被频繁的调用,将会有一些效率问题了 |