区别 从遍历数组角度来说,for···in遍历出来的是key(即下标),for···of遍历出来的是value(即数组的值) var arr = [99,88,66,77]; for(let i in arr){ console.log(i); //0,1,2,3 } for(let i of arr){ consoel.log(i); //99,88,66,77 } 从遍历字符串的角度来说,同数组一样。从遍历对象的角度来说,for···in会遍历出来的为对象的key,但for···of会直接报错 var obj = {name:"Bob",age:25}; for(var i in obj){ console.log(i) // name age } for(var i of obj){ console.log(i) //报错 } 如果要使用for…of遍历普通对象,需要配合Object.keys()一起使用 var person={ name:'coco', age:22, locate:{ country:'China', city:'beijing', } } for(var key of Object.keys(person)){ //使用Object.keys()方法获取对象key的数组 console.log(key+": "+person[key]);//name: coco,age: 22,locate: [object Object] }