在javascript中传递函数

时间:2011-03-06 17:02:19

标签: javascript function parameters

参考here

的代码

参考addListener(instance:Object, eventName:string, handler:Function)功能。这里我们传入一个处理程序。因此,单击它时会调用toggleBounce

我也可以将其更改为var toggleFn = function toggleBounce() {....)并传入toggleFn

我的问题是,我可以传入一个带参数的函数,例如,如果我希望处理程序是zoom(mapOptions.zoom -5)或类似的函数。

我知道这本质上是'你如何将函数作为参数传递'的问题,但我不能让它用于不同的组合。

function initialize() {
  var mapOptions = {zoom: 13, center: stockholm };
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

  marker = new google.maps.Marker({map:map,position: parliament });
  google.maps.event.addListener(marker, 'click', toggleBounce);
}

function toggleBounce() {
  if (marker.getAnimation() != null) { marker.setAnimation(null);} 
  else {marker.setAnimation(google.maps.Animation.BOUNCE);}
}

1 个答案:

答案 0 :(得分:3)

您可以传递匿名函数:

functionToPassTo(function(){ zoom(mapOptions.zoom -5) });

您也可以传递变量:

var options = "something";
functionToPassTo(function(){ zoom(options) });

唯一的另一种方法是将函数存储在变量中:

var options = "something",
func=function(){ zoom(options) });
functionToPassTo(func);