我正在阅读 这个 在地图上使用 for.. of
循环的例子,我对这个语法有点困惑:
var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (var [key, value] of myMap) {
console.log(key + " = " + value);
}
具体来说,我不了解正在发生的数组解构。我知道您可以使用数组解构来执行类似 let [one, two] = [1, 2];
之类的操作,但是此示例中发生了什么? myMap
不是一个数组,那么为什么会得到正确的值呢?
我的另一个问题是,为什么顺序 key, value
在解构中,但是当你执行 forEach()
顺序是 value, key
myMap.forEach((value, key) => {
console.log(key + " = " + value);
});
原文由 Saad 发布,翻译遵循 CC BY-SA 4.0 许可协议
就好像
所以它不是
myMap
必须是一个数组才能使解构工作;相反,它的每个元素在迭代时都必须是一个数组,并且迭代一个映射确实会产生数组(键/值对)。Map#forEach
的参数顺序可能是为了与Array#forEach
保持一致,它调用带参数的函数(item, index)
;反过来,它可能会这样做,因为您并不总是需要索引。