通过指针调用带有参数的Javascript函数?

时间:2011-05-16 19:53:08

标签: javascript ajax jquery javascript-events

如何在使用函数指针传递参数的同时在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中,是不是可以通过指针调用函数并传入参数?

4 个答案:

答案 0 :(得分:6)

  

在Javascript中,是不是可以通过指针调用函数并传入参数?

肯定有可能做到这一点。你的代码的一切看起来都很好。您确定正在调用$.post()回调(匿名函数)吗?调用barfoo是否未定义?

  

为了澄清,我们需要使用字符串调用函数 - 而不是函数指针。这可能吗?

是。如果函数是全局定义的,则可以将其作为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的匿名函数是否真的被称为?

希望这会有所帮助