我正在阅读在地图上使用for … of循环的
this示例,我对这种语法有点困惑:
var myMap = new Map(); myMap.set(0,"zero"); myMap.set(1,"one"); for (var [key,value] of myMap) { console.log(key + " = " + value); }
具体来说,我不明白正在发生的数组解构.我知道你可以使用数组解构来做像[one,two] = [1,2];这样的事情,但这个例子中发生了什么? myMap不是数组,为什么这会得到正确的值?
我的另一个问题是为什么订单键,解构中的值,但当你做一个forEach()时,顺序是值,键,就像这里:
myMap.forEach((value,key) => { console.log(key + " = " + value); });
解决方法
for (var [key,value] of myMap) { console.log(key + " = " + value); }
就好像
for (let pair of myMap) { var [key,value] = pair; console.log(key + " = " + value); }
所以这不是myMap必须是一个解构工作的数组;相反,它的每个元素在迭代时必须是一个数组,迭代映射确实产生数组(键/值对).
Map#forEach的参数顺序可能与Array#forEach的一致性,它使用参数调用函数(item,index);反过来,它可能会这样做,因为你并不总是需要索引.