先说结论:

    • 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of
    • for...in循环出的是key,for...of循环出的是value
    • 注意, ...of 是ES6新引入的特性。修复了ES5引入的 for...in 的不足
    • for...of不能循环普通的对象,需要通过和Object.keys()搭配使用

    for...of循环不会循环对象的key,只会循环出数组的value,因此for...of不能循环遍历普通对象,对普通对象的属性遍历推荐使用for...in
    如果实在想用for...of来遍历普通对象的属性的话,可以通过和Object.keys()搭配使用,先获取对象的所有key的数组
    然后遍历:

    1. var student={
    2. name:'wujunchuan',
    3. age:22,
    4. locate:{
    5. country:'china',
    6. city:'xiamen',
    7. school:'XMUT'
    8. }
    9. }
    10. for(var key of Object.keys(student)){
    11. //使用Object.keys()方法获取对象key的数组
    12. console.log(key+": "+student[key]);
    13. }

    https://segmentfault.com/q/1010000006658882