2011-09-10 28 views
0

以下接缝的工作,至少在通过控制台进行测试,请让我知道,如果它不是做事的正确方法:将函数传递给函数,稍后用参数执行?可能作为单个参数?

function test1(x){ 
    x(); 
} 

function test2(){ 
    console.log('test2 fired'); 
} 

test1(test2); 

会导致控制台输出:

test2 fired 

所以假设上述是正确的,我如何传递函数名称参数?他们是否需要单独通过?就像这样:

function test1(x,p,r){ 
    x(p,r); 
} 

function test2(p,r){ 
    console.log('test2 fired - p: '+p+' | r: '+r); 
} 

虽然上面应该工作,有没有在参数传递的“x”的一部分,而然后根据个人PARAMS?

为了提供一点见解,我们试图做的事情基本上是在“test1”内部遇到一个条件,执行一个带参数的函数。为了进一步简化,设想test1创建一个DOM对象,并且我们想要将一个onerror属性附加到这个DOM对象。如果这个DOM对象触发onerror,则调用我们的ajax函数,该函数接受参数(url,querystring,method等)。 我们希望能够在没有任何中间功能的情况下做到这一点。

谢谢亲切。

回答

2

我想这不符合你没有中间的功能状态,而解决这个问题的简单方法是通过一个匿名函数:

function test1(x){ 
    x(); 
} 

function test2(p,r){ 
    console.log('test2 fired - p: '+p+' | r: '+r); 
} 

test1(function() { test2('someP', 'someR'); }); 
+0

漂亮!你每天学习新的东西。 –

相关问题