在原有数据结构基础上计算生成的数据结构,例如Object,Map,Set,Array的entries(),keys(), value()方法生成的数据结构,默认具有iterator接口
类似数组对象常见:字符串,NodeList节点对象,参数arguments
1,并不是所有类似数组的对象都具有 Iterator 接口
2,对于类数组对象可以通过Array.From()将类数组对象转化为数组对象
3,for-of可以识别32 位 UTF-16 字符
for (let x of 'a\uD83D\uDC0A') { console.log(x); }
for-of和其他遍历方法对比:for循环,forEach循环,for...in...循环
forEach循环无法中途跳出
for...in循环有几个缺点(for...in循环主要是为遍历对象而设计的,不适用于遍历数组),
数组的键名是数字,但是for...in循环是以字符串作为键名“0”、“1”、“2”等等。
for...in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。
某些情况下,for...in循环会以任意顺序遍历键名。
对于for...of...
有着同for...in一样的简洁语法,但是没有for...in那些缺点。
不同于forEach方法,它可以与break、continue和return配合使用。
提供了遍历所有数据结构的统一操作接口。
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:测试上述代码运行效果。
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》