for in 和for each的区别
时间: 2023-07-12 09:41:07 浏览: 97
浅谈javascript中for in 和 for each in的区别
for...in 和 forEach() 都是 JavaScript 中用于循环遍历数组或对象的方法,但它们之间有一些区别。
1. for...in 循环可以遍历对象的可枚举属性,也可以遍历数组的索引或对象的键名,而 forEach() 只能遍历数组的值。
2. for...in 循环中,循环变量是对象的键名或数组的索引,而 forEach() 中的循环变量是数组的值。
3. for...in 循环可以遍历对象的原型链上的属性,如果不想遍历原型链上的属性,需要通过 hasOwnProperty() 方法来判断是否为自身属性。
下面是一些示例代码,演示了 for...in 和 forEach() 的用法:
```javascript
// for...in 循环遍历对象
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {
console.log(`${key}: ${obj[key]}`);
}
// forEach() 循环遍历数组
const arr = [1, 2, 3];
arr.forEach((value, index) => {
console.log(`${index}: ${value}`);
});
// for...in 循环遍历数组的索引
const arr2 = [1, 2, 3];
for (const index in arr2) {
console.log(`${index}: ${arr2[index]}`);
}
// for...in 循环遍历对象的可枚举属性
const obj2 = { a: 1, b: 2, c: 3 };
for (const key in obj2) {
console.log(`${key}: ${obj2[key]}`);
}
// for...in 循环遍历对象自身的属性
const obj3 = { a: 1, b: 2, c: 3 };
for (const key in obj3) {
if (obj3.hasOwnProperty(key)) {
console.log(`${key}: ${obj3[key]}`);
}
}
```
总的来说,for...in 循环和 forEach() 都是用于循环遍历数组或对象的方法,但是它们的应用场景不同,需要根据具体情况来选择。
阅读全文