回调函数 - 使用括号

时间:2011-07-05 22:19:32

标签: javascript jquery

我是jQuery的新手,并且对使用(或不使用)带有回调函数的括号感到困惑。说我有一个功能:

function cb() {
 // do something
}

现在有什么区别:

$("p").hide(1000, cb);

$("p").hide(1000, cb());

执行cb函数时是否与有关?如果有人能用最简单的术语向我解释这一点,那就太好了。

4 个答案:

答案 0 :(得分:9)

cb()表示执行 cb 功能的结果。

cb是函数 cb ,更准确地说是指针(引用)。

答案 1 :(得分:6)

  

是否与执行cb函数有关?

基本上,是的,虽然差异确实比这更深一些。

  • cb是对函数进行排序的引用。您将该函数作为一个参数传递给要在某处调用的参数。

  • cb()是一个函数调用;将调用该函数,并将结果作为参数传递给.hide

答案 2 :(得分:2)

$("p").hide(1000, cb);cb引用的函数作为回调传递。

$("p").hide(1000, cb());传递调用函数cb时返回的值。

假设:

function cb(){ return true; }

前者正在传递回调以供以后调用。后者传递返回值true,基本上是$("p").hide(1000, true);

答案 3 :(得分:2)

不同之处在于,javascript函数是第一类对象,可以传递给其他函数,以便它们可以在稍后阶段执行,也可以根据某些逻辑执行。

请考虑以下事项:

function add(a, b) {
    return a + b;
}

function minus(a, b) {
    return a - b;
}

function apply(func, a, b) {
    return func(a,b);
}

apply(add, 3, 4); // returns 7
apply(minus, 3, 4); // returns -1

apply(add(), 3, 4); // error: invalid number of arguments for add

apply(add(0,0), 3, 4); // error: add returns 0, but 0 is not a function and 
// so apply crashes when it tried to call zero as a function