js怎样在一个函数中执行另一个函数

//比如我想要一个检测算法的时间函数,并且把这个函数封装起来,以便其他函数的调用,

详细说明:这里我定义了两个数组,一个是10000以内的自然数数,另一个是10000以内能被7整除的数,然后我把两个数组用一种算法(这里用最笨的双遍历那种算法)把两个数组中的相同元素传入另一个数组。最后调用时间检测函数,查看这种算法的时间,但是有一个问题,就是如何在时间检测函数的内部去执行他的参数(cufunc),也就是那个要检测的函数。下面是代码

//这里是时间检测函数

function Time_detection(cufunc){

var start = new Date().getTime();//起始时间

  console.log(cufunc);//这里并不能执行那个函数!!

 var end = new Date().getTime();//接受时间

return (end - start)+"ms";//返回函数执行需要时间

}

function main(arr1,arr2){

var arrn=new Array();

var k=0;

for(i=0;i<arr1.length;i++){

for(j=0;j<arr2.length;j++){

if(arr1[i]==arr2[j]){

arrn.push(arr2[j]);

}

}

}

return arrn;}

function matharr(){

var b=new Array; 

for(i=0;i<10000;i++){

b[i]=i;}

return b;

 }

function matharr2(){

var b=new Array;

for(i=0;i<10000;i++){

if(i%7==0){b[i]=i}

}

return b;

 }

 var time=Time_detection(main(matharr(),matharr2()));

  document.write(time)

//然后如果知道更好的检测函数执行时间的方法分享给我更好!谢谢!


疯小蕾
浏览 3421回答 1
1回答

Caballarii

console.log(cufunc);//这里并不能执行那个函数!!这一行,首先分号写成中文的了会报错,其次,执行函数需要加括号,cufunc();这样还是出不了结果,是因为var time=Time_detection(main(matharr(),matharr2()));你写的这句话里面,main(matharr(),matharr2())这样写得到的结果是main函数里return的那个值,而不是main函数本身,你需要在那个计时函数里执行main,那就应该把main函数本身传进去var time=Time_detection(main)这样,感受一下var time=Time_detection(main())这样和上面的区别,但main函数还需要参数,那我们需要用到bind方法var time=Time_detection(main.bind(this,matharr(),matharr2()));这样就可以得到结果了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript