想了解javascript中回调函数的需求吗
我是学习JavaScript的新手。我读过关于回调函数的书,但我无法理解它的真正用途 所以,请通过任何现实世界的例子来帮助我们 下面是描述在中使用回调函数的小代码,但我也不清楚想了解javascript中回调函数的需求吗,javascript,html,Javascript,Html,我是学习JavaScript的新手。我读过关于回调函数的书,但我无法理解它的真正用途 所以,请通过任何现实世界的例子来帮助我们 下面是描述在中使用回调函数的小代码,但我也不清楚 var friends = ["Mike", "Stacy", "Andy", "Rick"]; friends.forEach(function (eachName, index){ console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick
});
在JavaScript中,下面的函数是一个对象:
function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick
}
让我们把这个对象称为A
。
当您传递代码friends.forEach(A)
时,浏览器将了解当运行数组friends
时,它将触发A
因此,在最后,回调函数就像您“定义”函数一样,但稍后您将使用它。Javascript通常是同步的,即命令一个接一个地执行 但是,有时您希望函数是异步的,因此您调用函数时不希望等待函数完成后再继续执行下一个任务
回调由异步函数使用。函数完成后,回调函数将运行,而其他代码不必等待它。JavaScript回调函数的用途很多。您可能已经知道它只是一个函数,我们将其作为参数传递给另一个函数。这意味着我们可以有一个名为
foo
的函数。让我们说foo
是一种通过排序运行数组的方法,但是实际的排序函数是可变的。因此,我们可以对每个算法使用foo
,只需像这样传递值
foo([1,6,1,2], quickSort);
假设我们有一个快速排序方法
一般来说,回调用于在函数执行后调用某些内容。你说,为什么不一个接一个地调用一个函数呢
foo();
bar();
您为什么要将条
传递给foo
?嗯,通常在处理异步性时使用回调。因此,bar
函数将在AJAX请求得到响应之前调用,或者在setTimeout触发回调之前调用
对于您提供的特定示例,这只是一种迭代数组的简化方法。另外一个好处是,您可以使用命名函数,这样您就可以更早地声明它并更好地分离代码。var-friends=[“Mike”、“Stacy”、“Andy”、“Rick”];forEach(函数(元素、索引、数组){console.log((索引+1)+“+”+元素);}) JavaScript中回调的概念是您可以将函数分配给变量 在JavaScript中,除了字符串和数字这样的简单类型之外,所有的东西都是对象(甚至那些对象也可以像对象一样调用函数) 让我们以您的函数为例: 语法 参数 要为每个元素执行的函数,包含三个参数:
currentValue
数组中正在处理的当前元素
index
array
数组中正在处理的当前元素的索引
index
array
正在应用forEach的数组
thisArg
可选。值,在执行回调时用作此值
它接受一个回调函数,该函数将为每个元素调用
此外,我们在JS中定义了异步调用(借助超时/间隔和AJAX调用)
回调函数的概念不仅仅停留在JS中。在任何地方,使用作为引用传递的函数都会更容易或更简单,我们有回调的概念(js中AJAX的这个特性让人疯狂,这就是为什么说js是异步的)
你可以在这里读到更多关于它的内容:
阅读此文:阅读此文:我阅读了这两个链接…但仍然不十分清楚…任何人都可以通过实际问题或示例进行解释吗?基本上,在您提供的代码中,您迭代的每个元素都会触发回调函数。在您的示例中,将使用每轮传递给回调函数的以下参数触发回调函数:值和索引。回调非常有用,因为它大大减少了代码的冗余:您不想为每个名称编写函数,是吗?…tx为您提供帮助…您可以用外行术语解释一下,什么是需要tp pass函数作为另一个函数的参数?????嗯,就像任何变量一样,您可以命名函数(例如
foo
)然后将其传递给另一个函数“bar
bar(foo)`您也可以通过将函数作为参数写入而不使用其名称来直接传递函数。这称为匿名函数:bar(function(){})
再次向您寻求帮助…..但您不理解我的问题…..我问的是外行术语中异步函数的需要???/不是它的定义..假设您希望一些代码在10秒后执行。例如,在10秒后,请用户进行调查。您可以定义一个名为promptUserForSurv的函数ey
然后设置超时(promptUserForSurvey,10000)
。在这种情况下,您需要将函数设置为异步,因为同步函数会在提示用户输入之前阻止代码执行10秒。或者使用HTTP请求。假设您需要服务器提供一些信息,如果服务器响应缓慢,且请求是同步的,则用户将被阻止,直到请求发出为止成功了。