代码段:
function fun(x, y, callback) {
a = y
for (let i = 0; i < x.length; i++) {
a = callback(a, x[i])
}
return a
}
上面的方法有什么作用?
发布于 2018-08-24 10:02:04
l
是一个Array
,s
可以是任何东西,并且callback
是function
在函数内执行的。
function operate(l, s, callback) {
a = s //should be var a = s
for (let i = 0; i < l.length; i++) {
a = callback(a, l[i])
}
return a
}
a=s;
这将变量的值赋给s
变量a
。
该for
循环调用回调function
对的每个成员Array
l
和分配功能的返回值a
。
最后,a
归还。函数的返回值取决于callback
function
给定的函数,因为它的返回值是a
在for
循环中赋值的。
样品:
<script>
function operate(l, s, callback) {
a = s
for (let i = 0; i < l.length; i++) {
a = callback(a, l[i])
}
return a
}
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
//returns the arithmetic sum of the numbers from 1 to 10 (1+2+3...+10)
console.log(operate(array, 0, function(a, b){
return a+b;
}));
</script>
发布于 2018-08-24 10:35:15
function operate(l, s, callback)
这里的功能行定义了函数及其参数。函数的名称是operate
,与3个参数l
,s
和callback
。
在这种情况下,l
预期是一个数组,s
如果l
在其数组中没有项,则是默认返回值,并且callback
是在函数内调用的operate
函数。
a = s
首先,我们将变量默认返回到我们传入的s
参数作为参数。如果我们不进入循环(如果l
数组为空),则只返回。
for (let i = 0; i < l.length; i++)
在这里,我们正在进行for循环。它有3个部分用于本声明。我们将一个新变量设置i
为0,然后检查一个i
小于的布尔值(true或false),即l.length
多少项l
,然后在每个循环上,将i
变量增加1(0更改为1,1改为2等)。
a = callback(a, l[i])
在这里,我们做了两件事。首先,我们正在执行callback
作为参数传入的函数operate
。这个函数应该接受两个参数,我们传递的值是a
,我们传入的值s
,或者前面的callback
返回值,以及l[i]
我们在l
数组中的当前项。我们使用i
变量来获取每个循环中的值,每个循环增加1。然后我们将a
变量设置为返回值,callback
以便我们可以将它用于下一个循环,或者返回它。
return a
该行将简单地将operate
函数的返回值设置为当前值a
。
https://stackoverflow.com/questions/-100002392
复制相似问题