学习 js 碰到的难题 求解惑

trustin 2013-11-22 10:24:30

function mapper(f)
{
return function(a){ return map(a,f);}; //
}

var increment = function(x){return x+1;};
var incrementer = mapper(increment);

incrementrt([1,2,3]) //==>[2,3,4]


我理解为 [1,2,3].map(increase);

上面代码的a 怎么理解,有什么作用, map函数为什么不写成 a.map(f);
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
trustin 2013-11-22
  • 打赏
  • 举报
回复
引用 6 楼 u011461314 的回复:
还是仵龙堂,你的map那里冒出来的。我也知道array有个map方法。
明白了 谢谢你的指点 在前面章节重新定义了map方法 找了下找到了

var map =Array.prototype.map
	?function(a,f){return a.map(f);}
	:function(a,f)
	{
		var results =[];
		for(var i=0,len=a.len;i++)
		{
			if(i in a) results[i] =f.call(null,a[i],i,a);
		}
		return results;
	};
zhjdg 2013-11-22
  • 打赏
  • 举报
回复
还是仵龙堂,你的map那里冒出来的。我也知道array有个map方法。
trustin 2013-11-22
  • 打赏
  • 举报
回复
上面有个地方打错了 incremener([1,2,3]) 改成 incrementer([1,2,3])
trustin 2013-11-22
  • 打赏
  • 举报
回复
引用 1 楼 u011461314 的回复:
我告诉你这是个无厘头。
引用 2 楼 zzgzzg00 的回复:
你代码没发全吧
引用 3 楼 lixujin123 的回复:
没明白楼主什么意思啊,可否再说明白一些,那个a是那个匿名函数里面的参数吧。怎么能写成a.map(f)呢?
我看的是js 权威指南 里面8.8.2章 高阶函数 原文是这样的:

//Return a function that expects an array argument and applies f to each element, returning ths arrat of return values.
//Contrast this with the map() function from earlier.
function mapper(f)
{
    return function(a){ return map(a,f);}; 
}
 
var increment = function(x){return x+1;};
var incrementer = mapper(increment);
 
incremener([1,2,3])  //==>[2,3,4]
map() 方法是数组方法 用法如

var arr=[1,2,3,4,5];
var arr1 = arr.map(function(x){return x+1;}); //得到[2,3,4,5,6]
lixujin123 2013-11-22
  • 打赏
  • 举报
回复
没明白楼主什么意思啊,可否再说明白一些,那个a是那个匿名函数里面的参数吧。怎么能写成a.map(f)呢?
似梦飞花 2013-11-22
  • 打赏
  • 举报
回复
你代码没发全吧
zhjdg 2013-11-22
  • 打赏
  • 举报
回复
我告诉你这是个无厘头。

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧