1

在我运行时在 jquery 中:

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

IDE 似乎知道 some-function 需要一个索引。

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

我知道如何用c语言做到这一点。

我正在寻找这样的东西:

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

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

希望这是有道理的.. 谢谢 ps 我知道 JavaScript 是弱类型,但我也注意到它.each()需要一个函数作为参数,而不仅仅是任何函数,而是一个以 int 作为参数的函数。

4

3 回答 3

1

它让我相信我可以在 javascript/jquery 中创建一个函数,该函数需要一个函数作为它的参数之一,它需要某些参数。

您可能在这里谈论代表。函数是 JavaScript 中的一等对象。他们没有像其他一些语言那样定义类型安全的指针。一个函数可以定义任意数量的参数,但您甚至不必传递一个参数。跳过的参数将是未定义的。他们也没有定义任何返回类型。函数可能返回值,也可能不返回值。

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

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

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

$('li').each(function(index){
   // do something
});
于 2012-06-20T11:31:47.637 回答
0

你要问的是这样的吗?

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

这主要用于javascript中的回调。

于 2012-06-20T11:17:39.147 回答
0
function ​myFunc​(fn, param)
{
    if (typeof fn != "function") {
        throw new TypeError();
    }
    fn.call(this, param);
}

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

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

演示。

于 2012-06-20T11:25:11.347 回答