js中 for 循环和 for-of 循环的区别

来源:07素材网 今天 18:39:31

在 JavaScript 中,for 循环和 for...of 循环是两种常用的迭代结构,但它们有不同的用途和语法。以下是它们的主要区别:

for 循环

for 循环是一种传统的循环结构,通常用于遍历数组、对象属性或执行固定次数的迭代。它的一般语法如下:

for (初始化表达式; 条件表达式; 递增/递减表达式) {
    // 循环体
}

示例

  1. 遍历数组
const arr = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i  ) {
    console.log(arr[i]);
}
  1. 执行固定次数的迭代
for (let i = 0; i < 10; i  ) {
    console.log(i);
}
  1. 遍历对象的属性(使用 for...in

虽然 for 循环本身不能直接遍历对象的属性,但 for...in 循环可以:

const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
    console.log(key, obj[key]);
}

for...of 循环

for...of 循环是 ES6 引入的一种新的迭代结构,用于遍历可迭代对象(如数组、字符串、Map、Set 等)。它直接迭代对象的值,而不是索引。

语法

for (const value of iterable) {
    // 循环体
}

示例

  1. 遍历数组
const arr = [1, 2, 3, 4, 5];
for (const value of arr) {
    console.log(value);
}
  1. 遍历字符串
const str = "hello";
for (const char of str) {
    console.log(char);
}
  1. 遍历 Map 和 Set
const map = new Map([['a', 1], ['b', 2]]);
for (const [key, value] of map) {
    console.log(key, value);
}

const set = new Set([1, 2, 3]);
for (const value of set) {
    console.log(value);
}

主要区别

  1. 迭代对象

    • for 循环通常用于遍历数组(通过索引)或执行固定次数的迭代。
    • for...in 循环用于遍历对象的可枚举属性。
    • for...of 循环用于遍历可迭代对象(如数组、字符串、Map、Set 等),直接获取值。
  2. 语法简洁性

    • for...of 循环更简洁,不需要手动管理索引。
    • for 循环需要手动管理索引,并且在遍历数组时需要通过索引访问元素。
  3. 性能

    • 在遍历数组时,for 循环和 for...of 循环的性能通常相差不大,但 for...of 循环的语法更简洁。
    • for...in 循环在遍历对象属性时可能会遍历到原型链上的属性,需要额外的处理(如使用 hasOwnProperty 方法)来避免。

总结

  • 使用 for 循环当你需要手动管理索引或执行固定次数的迭代。
  • 使用 for...of 循环当你需要遍历可迭代对象并直接获取值。
  • 使用 for...in 循环当你需要遍历对象的可枚举属性(但需要注意原型链上的属性)。
原文出处:
版权声明:本文来源地址若非本站均为转载,若侵害到您的权利,请及时联系我们,我们会在第一时间进行处理。

今日推荐

卸载软件后怎样删除程序残留文件
Git常用命令大全和使用说明
用户长时间不操作退出到登录页
如何做一名优秀的web安全工程师
网站开发公司如何精准的了解客户的需求呢?
站长推广时的10大绝招:一篇美文引发的深思
项目中使用TypeScript,应该注意以下几点?
Linux 开机自动执行自定义脚本