我的理解是,
以以下示例为例,这会在我的控制台中返回“Uncaught TypeError:items is not iterable”错误信息。
如果我把对象包装在一个数组[]中,它就能正常工作。然而,我的第二个例子按预期工作。
为什么第一个示例需要一个数组,而第二个示例不需要呢?
for...in
循环是为了在Javascript中迭代对象而设计的。可以参考这篇文章和这篇文章。以以下示例为例,这会在我的控制台中返回“Uncaught TypeError:items is not iterable”错误信息。
var text = {
name: "Coptic",
ranges: [[994, 1008], [11392, 11508], [11513, 11520]],
direction: "ltr",
year: -200,
living: false,
link: "https://en.wikipedia.org/wiki/Coptic_alphabet"
};
function dominantDirection(items) {
for (let item of items) {
if (item.direction === 'ltr') {
return 'ltr';
} else {
return 'rtl';
}
}
}
console.log(dominantDirection(text));
var object1 = {a: 1, b: 2, c: 3};
var string1 = "";
function loopObj() {
for (var property1 in object1) {
console.log(string1 = string1 + object1[property1]);
}
}
console.log(loopObj());
text
不是一个数组的例子! - Elefor ... of
而不是for ... in
。 - Pointytext
对象以检索方向(您基本上正在执行两个级别的迭代)。只需通过items.direction
访问方向即可。 - Terry