(for…in)和(for…of)语句之间有什么区别?

我知道什么是。。。在循环中(它在键上迭代),但我听说了关于。。。第一次使用(它对值进行迭代)

我对。。。属于循环

var arr=[3,5,7];
arr.foo="“你好”;;
用于(arr中的var i){
console.log(i);//日志“0”、“1”、“2”、“foo”;
}
用于(arr的var i){
console.log(i);//日志“3”、“5”、“7”;
//它不记录“3”、“5”、“7”、“你好”;
}

我理解,对于。。。of迭代属性值。那么为什么它不记录”呢;3",&引用;“5”&引用;7",&引用;“你好”而不是“;3",&引用;“5”&引用;7“

不同于。。。在循环中,它迭代每个键(“0”、“1”、“2”、“foo”)并迭代foo键,用于。。。of迭代foo属性的值,即"“你好”。为什么会这样

我在这里为。。。属于循环。它应该记录”;3",&引用;“5”&引用;7",&引用;“你好”但它会记录”;3",&引用;“5”&引用;7“。为什么?

示例链接

for in在对象的可枚举属性名称上循环

for of(在ES6中新增)确实使用了特定于对象的迭代器,并在该迭代器生成的值上循环

在您的示例中,数组迭代器确实会生成数组中的所有值(忽略非索引属性)

发表评论