这是一系列关于函数式编程的文章,主要记录我在函数式编程学习方面的心得体会,部分参考于部分书籍或者文章,纯粹个人学习,不做任何商业用途,如有冒犯请及时指正。
es6 every函数
every函数我们在日常开发中可能不太常用到,他的用法也很简单:
array.every(function(currentValue,index,arr), thisValue)
参数说明:
参数 | 说明 |
---|---|
function(currentValue,index,arr) | 必须,函数,数组中的每个元素都会执行这个函数 |
thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,“this” 的值为 “undefined” |
实例:
请求数组是否全是偶数
let arr = [1,2,3,4]
function checkEventNumber(num){
return num%2==0
}
arr.every(checkEventNumber) //false
let arr2 = [2,4,6,8]
arr2.every(checkEventNumber) //true
下面我们自己用函数式编程的思想写一个every函数。
const every = (arr,fn)=>{
let result = true //初始化数组全部为偶数
for(let i= 0;i<arr.length;i++) //循环数组
result = result && fn(arr[i]) //修改result的值
return result
}
现在我们已经按照我们的需求(判断数组是否全是偶数)创建好我们的函数,函数运行不依赖外部环境而且满足应用透明性,对所有的相同输入都返回相同的值,也是一个纯函数,符合我们函数式变成的思想。
接下来我们运行这个函数
function checkEventNumber(number){
return number%2==0
}
every([2,3,4],checkEventNumber) //false
every([2,4,6],checkEventNumber) //true
很好,代码运行符合我们的预期,这就是一个简单运用函数式编程实现的函数。函数式编程的好处很多,如果你能在自己的开发实践中不断地尝试使用函数式编程,你将会体验到现在网络上非常流行的词:真香!
下一篇文章继续使用函数式编程写一些我们日常使用的高阶函数。