如何在使用函数指针传递参数的同时在Javascript中调用函数?
示例:
function foo (a, callback) {
jQuery.post('/soon/check.json', { var:a }, function(resp) {
callback(resp);
});
}
function process_json(resp) {
// Do something with resp
}
foo(bar, process_json);
“process_json”永远不会被调用。在Firebug中,字符串“process_json”被传递到“foo”,但我认为它代表了一个指向函数“process_json”的指针。
在Javascript中,是不是可以通过指针调用函数并传入参数?
答案 0 :(得分:6)
在Javascript中,是不是可以通过指针调用函数并传入参数?
肯定有可能做到这一点。你的代码的一切看起来都很好。您确定正在调用$.post()
回调(匿名函数)吗?调用bar
时foo
是否未定义?
为了澄清,我们需要使用字符串调用函数 - 而不是函数指针。这可能吗?
是。如果函数是全局定义的,则可以将其作为window
对象上的属性调用,如下所示:
function foo () { /* snip */ }
var fn_name = 'foo';
window.foo(); // works
window['foo'](); // works
window[fn_name](); // also works
答案 1 :(得分:0)
var process_json = function(resp) {
// Do something with resp
}
答案 2 :(得分:0)
试试这个:http://jsfiddle.net/26naf/
函数alert
通过引用传递给foo:
function foo(fref)
{
fref("hi world");
}
foo(alert);
它可以正常工作。
答案 3 :(得分:0)
当然,您可以通过执行
传递函数作为回调jQuery.post('/soon/check.json', { var:a }, function(resp) {...
您正在传递将在帖子后调用的回调。
所以问题出在其他地方。传递给$.post
的匿名函数是否真的被称为?
希望这会有所帮助