Javascript 为什么ES6';s Map.forEach使用';值,键';而不是';键,值';?

Javascript 为什么ES6';s Map.forEach使用';值,键';而不是';键,值';?,javascript,dictionary,foreach,ecmascript-6,Javascript,Dictionary,Foreach,Ecmascript 6,如图所示,Map的forEach回调首先使用值调用,然后使用键调用。例如: map.forEach(函数(值、键、映射){…}) 似乎key,value比value,key更常见。即使是一个数组,也需要一个[键,值]对。这可能只是为了懒惰。大多数forEach循环只关心值本身。通过将其作为第一个参数提供,可以构造只接受一个参数的函数: map.forEach(function (value) { /* do something with value */; }) 而不是 map.forEach

如图所示,
Map
forEach
回调首先使用值调用,然后使用键调用。例如:

map.forEach(函数(值、键、映射){…})


似乎
key,value
value,key
更常见。即使是一个数组,也需要一个
[键,值]
对。

这可能只是为了懒惰。大多数forEach循环只关心
值本身。通过将其作为第一个参数提供,可以构造只接受一个参数的函数:

map.forEach(function (value) { /* do something with value */; })
而不是

map.forEach(function (unused, value) { /* do something with value */; })

我通常只需要这个值,并最终编写类似于
.map(function(u,value){…})的东西
我现在不知道它是否更“常见”,例如,fyi
数组。prototype.amp
在ECMA-262第5版中有描述,我认为原因是它更好地与数组的forEach方法保持一致。这可能是为了与保持一致,它的回调函数按照
索引
的顺序获取其参数,地图项目(显然)是通过键而不是索引来访问的。甚至
map.forEach(val=>val)
vs
map.forEach((key,val)=>val)
Hm,是的,这很有意义。当我最近第一次使用它时,它咬了我一口,所以这个问题…是的,通过类比
Array.map
,它的回调取
值、索引、数组
,它很有意义。