for···inとfor···ofの違い:
最初の文:(for···inはキーを取り、for··ofは値を取ります)
①配列をトラバースする観点から、for···inはキー(つまり、添え字)をトラバースし、for···ofはトラバースします出てくるのは値(つまり、配列の値)です。
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はオブジェクトのキーをトラバースしますが、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) //报错
}
④通常のオブジェクトをトラバースするために... 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]
}