我是学习JavaScript的新手。我读到了关于回调函数但我无法理解其实际用途。
所以,请帮助任何现实世界的例子。
以下是描述回调函数使用的小代码,但我也不清楚。
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick
});
答案 0 :(得分:1)
JavaScript回调函数的用途很多。您可能已经知道它只是一个函数,我们将其作为参数传递给另一个函数。这意味着我们可以拥有一个名为foo
的函数。让我们说foo
是某种通过排序运行数组的方法,但实际的排序函数是可变的。所以我们可以通过简单地传递这样的值来为每个算法使用foo
。
foo([1,6,1,2], quickSort);
假设我们有一个quickSort方法。
一般来说,回调用于在函数执行后调用某些东西。那你为什么不一个接一个地调用一个函数呢?
foo();
bar();
为什么要将bar
传递给foo
?好吧,通常在处理异步时使用回调。因此,bar
函数将在之前被调用,比如AJAX请求获得响应,或者在setTimeout触发它的回调之前。
至于您提供的具体示例,它只是迭代数组的简化方法。您还可以使用命名函数,这样您就可以更早地声明它并更好地分离代码。
答案 1 :(得分:0)
Javascript通常是同步的,即命令是一个接一个地执行的。
但是,有时你希望函数是异步的,所以你要调用一个函数,并且在进行下一个任务之前不想等待它完成。
异步函数使用回调。当函数完成时,将运行回调函数,而其余代码不必等待它。
答案 2 :(得分:0)
var friends = [" Mike"," Stacy"," Andy"," Rick"]; friends.forEach(function(element,index,array){console.log((index + 1)+"。" + element);});
答案 3 :(得分:0)
JavaScript中Callbacks的概念是你可以为变量分配函数。
在JavaScript中,除了作为字符串和数字的简单类型之外,它们是对象(甚至那些具有被调用函数的对象也是如此)。
让我们以你的函数为例,例如:
语法
arr.forEach(callback[, thisArg])
参数
callback
为每个元素执行的函数,带有三个参数:
currentValue
数组中正在处理的当前元素。
index
数组中正在处理的当前元素的索引。
array
正在应用forEach的数组。
thisArg
可选。执行回调时要使用的值。
它需要为每个元素调用一个回调函数。
此外,我们在JS中有异步调用的定义(借助超时/间隔和AJAX调用)。
回调函数的想法不仅仅停留在JS中。使用作为参考传递的函数将更简单或更简单,我们有回调的概念(它只是在js中使用AJAX的这个特性而疯狂,这就是为什么说JS是异步的常见原因)。
你可以在这里阅读更多关于它的信息: http://www.sitepoint.com/javascript-goes-asynchronous-awesome/
答案 4 :(得分:-1)
在JavaScript中,下面的函数是一个对象:
function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick
}
我们打电话给object A
。
当您传递代码friends.forEach(A)
时,浏览器会理解,在array friends
运行时,它会触发A
。
所以最后,回调函数就像你“定义”函数一样,但你稍后会使用它。