在我运行的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作为参数的函数。
答案 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!');