当前位置:首页 > JavaScript

js实现forof

2026-03-14 04:49:17JavaScript

for...of 循环的实现

JavaScript 的 for...of 循环用于遍历可迭代对象(如数组、字符串、Map、Set 等)。以下是几种实现方式:

使用 Symbol.iterator

可迭代对象必须实现 [Symbol.iterator] 方法。可以通过自定义迭代器实现 for...of 的功能:

js实现forof

const iterable = {
  [Symbol.iterator]() {
    let step = 0;
    const iterator = {
      next() {
        step++;
        if (step <= 5) {
          return { value: step, done: false };
        }
        return { value: undefined, done: true };
      }
    };
    return iterator;
  }
};

for (const value of iterable) {
  console.log(value); // 输出 1, 2, 3, 4, 5
}

手动实现类似 for...of 的功能

如果不使用 for...of 语法,可以通过手动调用迭代器实现类似功能:

js实现forof

const arr = [1, 2, 3];
const iterator = arr[Symbol.iterator]();

let result = iterator.next();
while (!result.done) {
  console.log(result.value); // 输出 1, 2, 3
  result = iterator.next();
}

生成器函数

生成器函数返回的也是可迭代对象,可以直接用于 for...of

function* generateSequence() {
  yield 1;
  yield 2;
  yield 3;
}

for (const value of generateSequence()) {
  console.log(value); // 输出 1, 2, 3
}

自定义类的迭代器

可以通过在类中定义 [Symbol.iterator] 方法使类支持 for...of

class Range {
  constructor(start, end) {
    this.start = start;
    this.end = end;
  }

  [Symbol.iterator]() {
    let current = this.start;
    const end = this.end;
    return {
      next() {
        if (current <= end) {
          return { value: current++, done: false };
        }
        return { done: true };
      }
    };
  }
}

for (const num of new Range(1, 5)) {
  console.log(num); // 输出 1, 2, 3, 4, 5
}

注意事项

  • for...of 只能用于可迭代对象,普通对象默认不可迭代。
  • for...in 不同,for...of 遍历的是值而不是键。
  • 可以通过 breakreturn 提前终止 for...of 循环。

标签: jsforof
分享给朋友:

相关文章

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…