1. The difference between for...in for...of
- for...in traverses to get the key, for...of traverses to get the value
- for...in traverses enumerable data types, for...of traverses iterable data types
2. Enumerable vs Iterable
- Enumerable data, such as objects, arrays, strings
- Iterable data, such as arrays, strings, Maps, and Sets
- Example
let obj = { name:'lisi', age:23, gender:'男'} //可枚举 let arr = [1, 2, 3] //可枚举 可迭代 // 判断对象的属性是否可迭代iterable console.log(typeof obj[Symbol.iterator] === 'function') console.log(typeof arr[Symbol.iterator] === 'function') // 判断对象的属性是否可枚举enumerable console.log(obj.propertyIsEnumerable('name')) // 检查对象可枚举属性enumerable是否为true console.log(Object.getOwnPropertyDescriptors(arr)) //obj不可迭代 for(let item of obj){ console.log(key) }