什么网站的新闻做参考文献,织梦禁止网站右击,请叫我鬼差大人王烨,外网网址可以做英语阅读的网站给大家推荐一个实用面试题库
1、前端面试题库 #xff08;面试必备#xff09; 推荐#xff1a;★★★★★
地址#xff1a;web前端面试题库
JavaScript 是一门强大而灵活的编程语言#xff0c;提供了多种迭代对象的方式。两个常见的迭代方式是 for...in 和…给大家推荐一个实用面试题库
1、前端面试题库 面试必备 推荐★★★★★
地址web前端面试题库
JavaScript 是一门强大而灵活的编程语言提供了多种迭代对象的方式。两个常见的迭代方式是 for...in 和 for...of 循环。这两种循环用于遍历对象和数组中的元素但它们有许多重要的区别和适用场景。在本文中我们将深入探讨 for...in 和 for...of 循环的区别以及何时使用它们。
1. for...in 循环
for...in 循环是一种用于遍历对象的属性的迭代方式。它的语法结构如下
for (const key in object) {// 执行代码
}1.1 遍历对象属性
for...in 循环主要用于遍历对象的属性它会将对象的每个可枚举属性作为迭代变量 key 的值。
const person {name: John,age: 30,city: New York
};for (const key in person) {console.log(key, person[key]);
}在上面的示例中for...in 循环遍历了 person 对象的属性并打印了每个属性的名称和值。
1.2 遍历原型链属性
for...in 循环不仅会遍历对象自身的属性还会遍历其原型链上的属性。这可能会导致意外的结果因为你可能会获取到不是你期望的属性。
function Person(name) {this.name name;
}Person.prototype.age 30;const john new Person(John);for (const key in john) {console.log(key, john[key]);
}在上面的示例中for...in 循环不仅遍历了 john 对象自身的属性name还遍历了其原型链上的属性age。
1.3 按照随机顺序
for...in 循环不保证按照属性的顺序进行迭代。属性的顺序可能是随机的这取决于 JavaScript 引擎的实现。
const colors {a: red,b: green,c: blue
};for (const key in colors) {console.log(key, colors[key]);
}在上面的示例中属性的遍历顺序可能是 b、a、c 或其他随机顺序。
1.4 不能直接访问属性值
在 for...in 循环中你需要通过属性的名称来访问属性的值这可能会使代码看起来更加冗长。
const person {name: John,age: 30,
};for (const key in person) {const value person[key];console.log(key, value);
}在上面的示例中我们需要使用 person[key] 来访问属性值而不能直接访问。
2. for...of 循环
for...of 循环是一种用于遍历可迭代对象如数组、字符串、Map、Set 等的迭代方式。它的语法结构如下
for (const element of iterable) {// 执行代码
}2.1 遍历数组元素
for...of 循环非常适合遍历数组中的元素它会将数组的每个元素作为迭代变量 element 的值。
const numbers [1, 2, 3, 4, 5];for (const num of numbers) {console.log(num);
}在上面的示例中for...of 循环遍历了 numbers 数组的元素并打印了每个元素的值。
2.2 不遍历对象属性
与 for...in 循环不同for...of 循环不会遍历对象的属性它专门用于遍历可迭代对象。如果你尝试将对象用于 for...of 循环将会得到错误。
const person {name: John,age: 30,
};for (const value of person) {console.log(value);
}
// TypeError: person is not iterable在上面的示例中尝试遍历 person 对象会导致类型错误因为对象不是可迭代的。
2.3 按照顺序迭代
for...of 循环保证按照对象中元素的顺序进行迭代。这意味着遍历数组时会按照数组的顺序进行不会出现随机顺序的情况。
const colors [red, green, blue];for (const color of colors) {console.log(color);
}在上面的示例中属性的遍历顺序是 red、green、blue。
2.4 直接访问元素值
在 for...of 循环中你可以直接访问可迭代对象的元素值而不需要使用索引或属性名称。
const numbers [1, 2, 3, 4, 5];for (const num of numbers) {console.log(num);
}在上面的示例中我们可以直接访问 num 变量来获取数组元素的值而不需要使用 numbers[num]。
4. 总结
for...in 和 for...of 循环都是 JavaScript 中用于迭代的有用工具但它们有不同的用途和适用场景。了解它们的区别可以帮助你更好地选择合适的迭代方式。
使用 for...in 循环遍历对象的属性但要注意遍历原型链上的属性。使用 for...of 循环遍历可迭代对象的元素例如数组、字符串、Map、Set 等它更直观且不会遍历原型链属性。 给大家推荐一个实用面试题库
1、前端面试题库 面试必备 推荐★★★★★
地址web前端面试题库