我正在书上读这个函数,我不明白匿名函数是如何实现的 是通过了渴三参数吗?
这是我的理解
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
:1
、2
、3
,和一个匿名函数。在 multiplyByTwo
函数的范围内,这些参数绑定(bind)到变量 a
、b
、c
和分别是回调
。这些参数也可以通过特殊的 arguments
数组引用。在示例中,这两种方法都用于引用参数。前三个参数使用循环内的 arguments
数组进行引用,第四个参数使用其名称进行引用,如 callback(...)
中所示。
关于javascript - 更好地理解 javascript 中的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928441/