回调函数 – 使用括号

我是jQuery的新手,对使用(或不使用)括号函数的括号感到困惑。 说我有一个function:

function cb() { // do something } 

现在有什么区别:

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

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

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

cb()表示给我执行函数cb的结果。

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

是否与cb函数执行时有关?

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

  • cb是对函数的各种引用。 你将函数作为一个参数传递给要在某个地方调用的参数。

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

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

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

鉴于:

 function cb(){ return true; } 

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

不同之处在于,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