我正在阅读这个for.. of
在Map上使用循环的例子,我对这种语法有点困惑:
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); });
Ry-.. 24
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
的参数顺序可能与for一致Array#forEach
,它使用参数调用函数(item, index)
; 反过来,它可能会这样做,因为你并不总是需要索引.
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
的参数顺序可能与for一致Array#forEach
,它使用参数调用函数(item, index)
; 反过来,它可能会这样做,因为你并不总是需要索引.