在函数Javascript中获取执行函数的参数

时间:2015-05-14 22:01:26

标签: javascript

我有一个测量函数执行时间的函数,并在每次执行后清理DOM:

function measureTimeExecution(domID, testFunc){
    console.time("timer");
    for(var i = 0; i < 10; i++){
       testFunc();
       var getDiv = document.getElementById(domID);
    }
    getDiv.empty();
    console.timeEnd("timer");
}

创建新ul

的功能
 function createList_Task_2(divID){
        var createNewUL = document.createElement("ul");
        createNewUL.id = "phoneList";
        document.getElementById(divID).appendChild(createNewUL);
        for(var i = 0; i < phones.length;i++){

            var chunk = "<li>" + phones[i].age +"<br>" + phones[i].id +"<br><img src='"
                + phones[i].imageUrl  +"'/><br>"  + phones[i].name + "<br>" + phones[i].snippet + "</li>";

            document.getElementById("phoneList").innerHTML += chunk;
        }
    }

但是我给了我:Uncaught TypeError:testFunc不是函数;

示例:

measureTimeExecution("div1", createList_Task_3("div1"));

是否有可能在measureTimeExecution中以某种方式获取domID作为testFunc的参数?

2 个答案:

答案 0 :(得分:3)

问题是当你调用measureTimeExecution("div1", function () { createList_Task_3("div1"); }); 时,你正在运行参数,而是再次传递一个函数。

看看它应该有效的代码

{{1}}

答案 1 :(得分:3)

function measureTimeExecution(domID, testFunc)

该函数期望第二个参数是一个函数,但是调用它measureTimeExecution("div1", createList_Task_3("div1"));,它提供createList_Task_3("div1")的返回值。由于createList_Task_3不返回任何内容,因此默认返回为undefined

要使它成为一个函数以及能够提供ID,它应该返回一个这样的函数:

function createList_Task_2(divID){
  return function(){
    var createNewUL = document.createElement("ul");
    createNewUL.id = "phoneList";
    document.getElementById(divID).appendChild(createNewUL);
    for(var i = 0; i < phones.length;i++){

        var chunk = "<li>" + phones[i].age +"<br>" + phones[i].id +"<br><img src='"
            + phones[i].imageUrl  +"'/><br>"  + phones[i].name + "<br>" + phones[i].snippet + "</li>";

        document.getElementById("phoneList").innerHTML += chunk;
    }
  }
}