将函数传递给另一个函数(带参数)

时间:2013-12-18 10:28:03

标签: javascript function-pointers

我似乎无法弄清楚这一点。

我有一个函数,其中参数filter需要是一个函数调用,它接受在这个函数中构建的对象:

function bindSlider(time, filter)
{

   var values = {
     min : 8,
     max : 9
   };

   filter(values);
}

我现在不确定如何拨打bindSlider,我认为它类似于:

bindSlider(time, function(values) {/*do stuff here and accept values built in bind slider*/});

但是失败并出现错误:

  

ReferenceError:未定义fliter


我知道可以做

function filter(values) {

}

bindSlider(time, filter);

但是我想为每个调用声明不同的过滤器,因此我所追求的是function() {}类型模式。

2 个答案:

答案 0 :(得分:1)

根据我的测试,它确实有效。我遇到的唯一问题是您的对象使用了=而不是:。 例如:

function bindSlider(time, filter) {
   var values = {
       min: 8,
       max: 9
   };
   filter(values);
}

bindSlider(10, function(values) {
   var html;
   for (var i in values) {
       html = document.getElementById('test').innerHTML;
       document.getElementById('test').innerHTML = html + '<br />' + values[i];
   }
});

JSFiddle

答案 1 :(得分:0)

如果更新代码以使对象格式正确,则可能会消除错误。哦,确保你正确地将time传递给bindSlider函数。

var values = {
  min: 8,
  max: 9
};

所以:

function bindSlider(time, filter) {

 var values = {
   min: 8,
   max: 9
 };

 filter(values);

}

bindSlider(1000, function (values) {
  console.log(values); // { min: 8, max: 9 }
});

Fiddle