for, forEach, map 都可以用来循环.
for, forEach, map 这三个方法本质上是不同的.
for 是循环的基础语法, 可以有 for...in, foo...of,for(let i = 0; i < len; i++) 等. 在 for 循环中可以使用 continue, break 来控制循环.
forEach 可以当做是 for(let i = 0; i < len; i++) 的简写, 但是不能完成 i + n 这种循环, 同时也不支持 continue 和 break, 只能通过 return 来控制循环. 另外, 使用 forEach 的话, 是不能退出循环本身的, 一般只用于 循环数组.
map 的用法应该是循环当前可循环对象, 并且返回新的可循环对象, 跟 for 和 forEach 是不同的.
for...in 和 foo...of 区别:
for...in 循环出来的是 key, 而且会遍历 prototype;
foo...of 循环出来的是 value, 不能用于循环普通的对象, 需要和 Object.keys() 搭配;
所以循环对象属性时, 使用 for...in, 循环数组时用 for...of.
来源: http://www.bubuko.com/infodetail-2960756.html