我很难过如何正确地将参数传递给回调函数而不立即调用该函数。
例如,这将按预期工作:
var callBack = function() { ... }
window.setTimeout( callBack, 1000 );
但这会不小心调用callBack
:
var callBack = function(param1, param2) { ... }
window.setTimeout( callBack('foo','bar'), 1000 );
我很难过如何正确地将参数传递给回调函数而不立即调用该函数。
例如,这将按预期工作:
var callBack = function() { ... }
window.setTimeout( callBack, 1000 );
但这会不小心调用callBack
:
var callBack = function(param1, param2) { ... }
window.setTimeout( callBack('foo','bar'), 1000 );
您可以按如下方式调用它,
var callBack = function(param1, param2) { ... }
window.setTimeout( function(){callBack('foo','bar');}, 1000 );
传递参数的方法是时间参数如在后说明的文档settimeout()
。
var timer = window.setTimeout( func, delay, [ param1, param2, ... ]
第一个参数是实际的回调,第二个是时间(以毫秒为单位),最后一个(可选)参数是要传递给回调的参数数组。
因此,对于您的示例,它将类似于:
window.setTimeout( callBack, 1000, [ "foo", "bar" ] );
您的问题的标题有点误导,因为用于将参数传递给回调函数的方法在使用它的代码的实现上有所不同。正如您可能想象的那样,实际的函数对象及其参数不一定需要一起传递,因为函数的执行会推迟到稍后的时间;只有这样,参数才需要与回调联系。
有关如何将参数传递给回调对象的更通用的解释,您可以查看这篇文章:JavaScript:将参数传递给回调函数。