这是我参与更文挑战的第11天,活动详情查看: 更文挑战
回调函数
什么是回调函数呢?
回调函数有什么用呢?
让我们一起来探索吧。
所谓回调函数是指,一个函数A作为参数传递给另个一个函数B,然后函数B在函数体内调用
函数A,此时我们称函数A为回调函数。匿名函数常作为函数的参数传递,实现回调函数。
复制代码
来看一个具体例子
<script>
function cal(num1,num2,fn){
return fn(num1,num2);//回调函数就是让函数内的部分功能由调用者决定。
}
console.log(cal(1,2,function(a,b){
return a + b; //返回a+b的值
}));
console.log(cal(1,2,function(a,b){
return a * b; //返回a*b的值
}));
</script>
复制代码
数组利用回调函数
JavaScript为数组提供了很多利用回调函数实现具体功能的方法。
find()
返回通过测试的数组的第一个元素的值。
数组中的每个元素都调用一次函数执行。
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined。
<script>
var arr = [1,2,3,4,5];
function greater(num){
return num>3;
}
//find返回第一个符合条件的结果。
console.log(arr.find(greater));//结果为4
</script>
复制代码
every()
检测数组中的所有元素是否满足条件,满足返回true,否则返回false
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
<script>
var arr = [1,2,3,4,5];
function greater(num){
return num>3;
}
//every检测所有元素是否满足条件,一个不满足即返回false,全部满足返回true
console.log(arr.every(greater));//结果为false
</script>
复制代码
some()
检测数组中所有元素,是否有元素满足条件,有则返回true,否则返回false
复制代码
forEach()
<script>
var arr = [1,2,3,4,5];
var sum = 0;
function add(num){
sum = sum + num;
}
//forEach对数组每个元素都执行一次函数
arr.forEach(add)
console.log(sum);//结果为15
</script>
复制代码
map()
<script>
var arr = [1,2,3,4,5];
function fac(num){
return num * num;
}
//返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
console.log(arr.map(fac));//结果为[1, 4, 9, 16, 25]
</script>
复制代码
reduce()
接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
<script>
var arr = [1,2,3,4,5];
function sum(sumAll,num){//sumAll即为累加器
return sumAll+num;
}
console.log(arr.reduce(sum));//结果为15
</script>
复制代码
reduceRight()
reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END