javascript - 更好地理解 javascript 中的回调函数

标签 javascript callback anonymous-function

我正在书上读这个函数,我不明白匿名函数是如何实现的 是通过了渴三参数吗?

这是我的理解

function multiplyByTwo(a, b, c, callback) {
  var i, ar = [];
  for(i = 0; i < 3; i++) {
    ar[i] = callback(arguments[i] * 2);
  }
  return ar;
}

但不是这个

myarr = multiplyByTwo(1, 2, 3, function(a){return a + 1});

谢谢理查德

最佳答案

一些详细说明 multiplyByTwo 函数契约的注释在这里会很有帮助:

// multiplyByTwo
// num num num (num -> x) -> x[]
function multiplyByTwo(a, b, c, callback) {
  ...

这意味着该函数接受四个参数,并返回一个 x 数组。 x 可以是任何类型。前三个参数是数字。函数的第四个参数实际上是函数本身。该函数接受一个数字,并返回一个x。同样,x 可以是任何类型,但它在整个合约中都是相同的类型。

multiplyByTwo 函数内,回调函数会为其他每个参数调用一次。每个调用的结果都会添加到一个数组中,即 multiplyByTwo 的返回值。

arguments 变量是 javascript 中的一个特殊变量,它在函数作用域内以数组形式提供对该函数的所有参数的访问。

回调函数绑定(bind)到 multiplyByTwo 函数范围内的名称 callback。然后可以像任何其他函数一样调用它,例如通过附加括号和参数。然后可以通过该名称引用您在调用 multiplyByTwo 时提供的匿名函数。

因此,在给出的示例中,使用四个参数调用 multiplyByTwo:123 ,和一个匿名函数。在 multiplyByTwo 函数的范围内,这些参数绑定(bind)到变量 abc 和分别是回调。这些参数也可以通过特殊的 arguments 数组引用。在示例中,这两种方法都用于引用参数。前三个参数使用循环内的 arguments 数组进行引用,第四个参数使用其名称进行引用,如 callback(...) 中所示。

关于javascript - 更好地理解 javascript 中的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928441/

相关文章:

c# - 同步和异步回调

javascript - HTML + react : Radio button stuck on the one initially set as "checked"

javascript - 使用 JQuery 在悬停时显示文本

javascript - 如何使用 reactjs 动态填充 html 内容?

javascript - webGL2 片段着色器收到错误值

java - 来自 ResultCallback<LocationSettingsResult> 的 onResult() 回调永远不会被调用

ios - 回调中的类型推断错误

javascript - 了解对象字面量中的 JavaScript 匿名函数与命名函数

javascript - 使用异步 XMLHttpRequest 加载一组 XML 文件

javascript变量范围: returning variables from nested functions?