我是jQuery的新手,对使用(或不使用括号)回调函数有点困惑。说我有一个功能:回调函数 - 使用括号
function cb() {
// do something
}
现在是什么样的区别:这是对与当的CB函数执行做
$("p").hide(1000, cb);
和
$("p").hide(1000, cb());
?如果有人能够以最简单的方式向我解释这一点,那将是非常棒的。
我是jQuery的新手,对使用(或不使用括号)回调函数有点困惑。说我有一个功能:回调函数 - 使用括号
function cb() {
// do something
}
现在是什么样的区别:这是对与当的CB函数执行做
$("p").hide(1000, cb);
和
$("p").hide(1000, cb());
?如果有人能够以最简单的方式向我解释这一点,那将是非常棒的。
它与cb函数执行时有关吗?
本质上来说,是的,虽然差异比这个稍微深一点。
cb
是对函数进行排序的参考。你将这个函数作为参数传递到某个地方。
cb()
是一个函数调用;该函数将被调用,结果作为参数传递给.hide
。
$("p").hide(1000, cb);
经过cb
引用的函数,作为回调。
$("p").hide(1000, cb());
传递函数cb
被调用时返回的值。
考虑:
function cb(){ return true; }
前者是通过回调供以后调用。后者通过返回值true
,本质上是$("p").hide(1000, true);
*“传递函数'cb )'(作为回调函数)“*()(函数名称后面)在这里引起混淆。 –
是的。为清晰起见进行编辑。 – Dan
不同之处在于,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
建议:在控制台复制此,看到了差异:'函数cb(){返回42;};的console.log(CB); console.log(cb());' –
这是JavaScript的一项功能。它不仅限于jQuery。 –
啊的确值得一提。 jQuery是一个_library_(并且函数''''和'.hide'来自它)。但是,像这样的基本语法规则是由JavaScript语言编写的。因此,除了周围的上下文之外,这个问题与jQuery实际上几乎没有关系。 –