刚看闭包的视频,这个有点不懂啊

创建于6天前 / 评论数 2 / 更新于6天前 / 收藏数0 / 点赞数 0

function between(a, b) {
return function(v) {
return v >= a && v <= b
}
}
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17];
let newArr = arr.filter(between(5, 10))
console.log(newArr)

请问这个return的function(v){},这个v是哪来的啊。 我console了一下 v的值就是arr的每一个值,但是我看不懂是怎么传进去的,能解释一下吗 老师

前端入门到入土

其实这个例子只要理解闭包原理还是挺好懂的,between(5, 10)执行以后不是把它的子函数返回来了吗function(v) {return v >= a && v <= b},
此时就就变成arr.filter(function(v) {
return v >= a && v <= b
})。
arr.filter()会每次执行的时候把arr数组里的值传给v,同时因为子函数可以访问父级作用域中的数据也就是between(a,b)中的两个参数,所以子函数中的a=5,b=10。

近视到成了瞎子

@前端入门到入土 这样我倒是看懂了,谢谢了哈。看来闭包我还是没有完全理解

我们的使命:传播互联网前沿技术,帮助更多的人实现梦想
Copyright © 2010-2018 houdunren.com All Rights Reserved 京ICP备12048441号-3
: 010-86467608 : 2300071698@qq.com
编码: 海豚日记