我现在知道回调是传递给参数的函数。 但我可以不这样做,有什么意义呢? 例如
function i()
{
alert("callback");
}
function p(a)
{
for(r=0;r<100;r++)
{document.write(r);}
a();
}
p(i);
或
function i()
{
alert("callback");
}
function p()
{
for(r=0;r<100;r++)
{document.write(r);}
i();}
我搜索但找不到答案
答案 0 :(得分:3)
如果您想对某些不能立即使用的数据执行某些操作,通常会使用回调。
例如,要在响应到达时从HTTP响应处理某些数据,或者在单击鼠标按钮时基于鼠标单击发生的位置执行操作
答案 1 :(得分:2)
所以以你为例,是的,如果你想在函数i()
中调用p()
,你可以继续这样做。但是,如果你想要一个像p()
这样的函数接受它最后调用j()
而不是i()
怎么办?嗯,这很容易,你传递一个函数作为p()
的参数,在最后调用而不是硬编码。
这是关于灵活性的。为了做到这一点,没有必要这么做,但有很多情况下它很有用。
让我试着想出一个简单的例子,假设我们有一个名为sum()
的函数,它将数组的所有元素相加。现在让我们说在我们的程序中的某个地方,我们想要的不是所有元素,而是一些元素,可能只是某个值上的元素,或者每个其他元素。如果我们设置sum以便除了要处理的数组之外还可以使用一个函数参数来调用filter
(如果保留为null,我们将默认对所有元素求和),我们可以使我们的sum()
函数更有用,并避免编写一大堆不同的求和函数。
此外,正如昆汀已经回答的那样,它对于异步功能特别有用。