2012-06-20 55 views
1

jQuery中,当我运行:javascript的jquery函数,需要一个特定类型的函数作为参数?

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

的IDE似乎知道一些功能期待一个指标。

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

我知道如何用c语言来完成它。

我期待这样的事情:

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

因此函数“somefuncA”期望得到的功能funcB是得到一个整数作为参数,然后做一些事情。

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

+0

请解释你的目标。如果这就是你要求的,你不能在JavaScript中声明类型。 –

+0

让我们知道你到底想做什么。 – Subhajit

+1

*不仅仅是一个函数,而是一个以int为参数的函数。*这里你错了。'each'不指望这种函数,它只会在函数接受它时提供索引。如果你传递一个没有的函数,它仍然没有问题。 – Yoshi

回答

1

这使我相信我可以做一个函数在javascript/jquery中, 需要一个函数作为其参数之一,它需要某个参数 。

您可能会在此讨论代表。 Functions are first-class objects in JavaScript。他们没有像其他一些语言那样定义类型安全的指针。一个函数可以根据自己的喜好定义许多参数,但是您甚至不需要传递一个参数。跳过的参数将不确定。他们也没有定义任何返回类型。函数可能会返回值,也可能不会返回值。

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

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

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

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

你在问什么是这样的?

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

这主要用于JavaScript中的回调。

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

呼叫myFucn有两个参数,第一个参数是函数和第二参数是它的参数“你好”

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

DEMO.

相关问题