期望特定类型的函数作为参数的javascript jquery函数?

时间:2012-06-20 11:12:19

标签: javascript jquery

在我运行的jquery中:

$('li').each(some-function(i){});

IDE似乎知道某个函数正在期待一个索引。

这让我相信我可以在javascript / jquery中创建一个函数,它希望函数作为其中一个需要某些参数的参数。 (我是javascript的新手)

我知道怎么用c语言来做。

我正在寻找类似的东西:

void somefuncA ( void (*funcB)(int) ){
    //do stuff with funcB
    (*funcB)(5);
}

所以函数'somefuncA'希望得到一个函数funcB,它将一个整数作为参数然后做一些事情。

希望有意义..谢谢 附:我知道JavaScript是弱类型但我也注意到.each()期望函数作为参数而不仅仅是任何函数,而是一个以int作为参数的函数。

3 个答案:

答案 0 :(得分:1)

  

它让我相信我可以在javascript / jquery中创建一个函数   期望函数作为其中一个期望的参数   paramters。

你可能在这里谈论代表。 Functions are first-class objects in JavaScript。它们没有像其他语言那样定义类型安全指针。函数可以根据需要定义任意数量的参数,但您不必传递任何参数。跳过的参数将是未定义的。它们也没有定义任何返回类型。函数可能会也可能不会返回值。

您的IDE非常聪明,可以找到函数调用,并提示您提供了哪些参数。您可以在函数中自由使用或跳过这些参数。

$('li').each(function(){
   // do something
});

在这里创建一个不带任何参数的匿名函数。 jQuery将传递索引或其他一些参数,但不会产生任何错误。您还可以创建一个使用jQuery提供的索引参数的函数。

$('li').each(function(index){
   // do something
});

答案 1 :(得分:0)

你问的是这样的吗?

function somefuncA ( funct, parameters ){
    //do stuff with funcB
    alert(funct(parameters));
}

这主要用于javascript中的回调。

答案 2 :(得分:0)

function ​myFunc​(fn, param)
{
    if (typeof fn != "function") {
        throw new TypeError();
    }
    fn.call(this, param);
}

使用两个参数调用myFucn,第一个参数是函数,第二个参数是参数'Hello'

myFunc(function(m){
    alert(m);
}, 'Hello!');​

DEMO.