for in
在 ECMA-262 中没有明确规定此行为,只说取决于实现。现在的普遍实现是先把当中的非负整数键提出来,排序好输出,然后将剩下的按定义时的顺序输出。
var data = {
'4': '',
'3': '',
'2': '',
'1': '',
};
for (var i in data) {
console.log(i)
}
// 1
// 2
// 3
// 4
var obj = {
'first': '',
'zoo': '',
'2': '',
'34': '',
'1': '',
'second': '',
};
for (var i in obj)
console.log(i);
// 1
// 2
// 34
// first
// zoo
// second
参考
for in 循环的输出顺序问题 - 司徒正美 - 博客园
for of
对Set和Map,for of 遍历的顺序是按照各个成员被添加进数据结构的顺序。
var es6 = new Map();
es6.set(3, 6);
es6.set(2, "TC39");
es6.set(1, "ECMA-262");
for (var [name, value] of es6) {
console.log(name + ": " + value);
}
// 3: 6
// 2: TC39
// 1: ECMA-262