码迷,mamicode.com
首页 > 编程语言 > 详细

数组filter等和arguments结合闭包实现函数复用

时间:2015-09-05 22:06:45      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width;initial-scale=1.0;user-scalable=no">
<title>数组filter等和arguments结合闭包实现函数复用</title>
</head>
<body>
<script>


var numArr = [1,2,3,4,5,6];

 

//下面是自定义多种过滤函数,除了可以用于filter,还可以用于map, forEach, sort等
//通常使用filter函数,我们都是直接使用 array.filter(function(item,index,array){

//do something

//})

//这样不利于函数对象复用,下面会结合arguments来实现对filter函数的复用


function morethan(){

//获取用户传入的第一个参数值,作为比较基数
var num = arguments[0];

//下面这个myfn函数,是filter真正作用的函数
var myfn = function(){


var item = arguments[0];

//由于内部函数可以访问父作用域内的变量,所以num的值可以获得
return (item>num)
}


//下面是返回函数对象的引用(其实指针更合适),这里可以说是实现了闭包
//但是我认为不如理解成当这个外部函数执行完毕,由于对内部函数产生的
//引用指针还在最外部的环境里起作用没被回收,所以导致内部函数对象能够持续访问
return myfn;
}
//下面这个等价于 numArr.filter(function(item,index,array,num){})
var filterArr = numArr.filter(morethan(4));

alert(filterArr);
</script>

</body>
</html>

数组filter等和arguments结合闭包实现函数复用

标签:

原文地址:http://www.cnblogs.com/eternaluve/p/4783976.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!