我是jQuery的新手,并且对使用(或不使用)带有回调函数的括号感到困惑。说我有一个功能:
function cb() {
// do something
}
现在有什么区别:
$("p").hide(1000, cb);
和
$("p").hide(1000, cb());
执行cb函数时是否与有关?如果有人能用最简单的术语向我解释这一点,那就太好了。
答案 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