JS-- for...in和for...of
1,for...in
用于遍历对象的可枚举属性(包括原型链上的),返回的是属性名(字符串)。
也可以遍历数组,但返回的是索引(字符串类型),不推荐用于数组。
2,for..of
用于遍历可迭代对象(如数组、字符串、Map、Set等),返回的是每一项的值。
不能直接用于普通对象(非可迭代对象)。
3,举例:
3.1 for...in遍历对象。不想要遍历原型链上的属性和方法通过obj.hasOwnProperty过滤掉
for (const key in data) {if (data.hasOwnProperty(key)) {const value = data[key];if (value !== undefined) {items.push(`"${key}":${stringify(value)}`);}}
}
3.2 用for...of替代for...in,那么通过Object.keys(obj),拿到所有的对象的key
你可以用 for (const key of Object.keys(obj)) 替换 for...in,这样更安全,只遍历自有属性。
for (const key of Object.keys(data)) {const value = data[key];if (value !== undefined) {items.push(`"${key}":${stringify(value)}`);}
}
for...in 用于遍历对象的属性名,返回字符串(包括原型链上的)。
for...of 用于遍历可迭代对象的值,不能直接用于普通对象。