0Pricing
JavaScript Academy · บทเรียน

โพรโทคอลแบบวนซ้ำได้และ for...of

เรียนรู้โพรโทคอลแบบวนซ้ำได้: Symbol.iterator, iterator.next() และการใช้ for...of, spread กับ Array.from ผ่านตัวอย่างกำหนดเองขนาดเล็ก

โพรโทคอลแบบวนซ้ำได้และ for...of เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวม

เป้าหมาย: อ่านและสร้าง iterable ขนาดเล็ก

  • ความหมายของ iterable
  • Symbol.iterator และ iterator.next()
  • for...of, spread, Array.from
  • สร้างตัวอย่างตัวนับตั้งแต่ 0 ถึง N
โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 1

for...of กับสิ่งที่มีมาให้ในภาษา

for...of ใช้ได้กับ iterable ที่มีมาให้ในภาษา เช่น อาร์เรย์และสตริง และจะคืนรายการตามลำดับ

// Arrays and strings are iterable
const arr = [10, 20, 30];
for (const n of arr) {
  console.log("arr item:", n);
}

const word = "JS";
for (const ch of word) {
  console.log("char:", ch);
}
โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 2

iterable แบบกำหนดเอง

iterable มี [Symbol.iterator]() ซึ่งคืนค่า iterator ที่ next() จะคืนค่า { value, done }

// A tiny iterable that counts 0..max-1
const Counter = {
  make: function (max) {
    return {
      max: max,
      // Symbol.iterator returns an iterator object
      [Symbol.iterator]: function () {
        let i = 0;
        return {
          next: function () {
            if (i < max) {
              const out = { value: i, done: false };
              i = i + 1;
              return out;
            }
            return { value: undefined, done: true };
          }
        };
      }
    };
  }
};

for (const x of Counter.make(3)) {
  console.log("count:", x);
}
โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 3

การวนซ้ำด้วยตนเอง

เบื้องหลัง for...of จะเรียก next() ซ้ำ ๆ จนกว่าจะได้ done: true

// You can drive the iterator manually
const iterable = Counter.make(2);
const it = iterable[Symbol.iterator]();

console.log(it.next()); // { value: 0, done: false }
console.log(it.next()); // { value: 1, done: false }
console.log(it.next()); // { value: undefined, done: true }
โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 4

Spread และ Array.from

Spread และ Array.from ต่างใช้โพรโทคอล iterable เพื่อรวบรวมค่า

// Spread (...) and Array.from consume iterables
const small = Counter.make(4);
const a1 = [...small];
const a2 = Array.from(Counter.make(3));

console.log("spread:", a1);
console.log("from :", a2);
โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 5

แนวปฏิบัติที่ดี

เคล็ดลับ:

  • คืนค่า iterator ใหม่ทุกครั้งใน [Symbol.iterator]
  • จบด้วย done: true เสมอเพื่อหลีกเลี่ยงลูปไม่รู้จบ
  • เก็บสถานะไว้ภายในคลอสเชอร์ของ iterator
โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 6

แบบทดสอบโพรโทคอล iterable

ตรวจสอบอย่างรวดเร็ว: ทำให้ออบเจ็กต์เป็น iterable

โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 7

ทบทวน

ทบทวน: สิ่งที่มีมาให้ในภาษา เช่น อาร์เรย์ เป็น iterable หากต้องการสร้างเอง ให้เพิ่ม [Symbol.iterator]() ที่คืนค่า iterator พร้อม next() ใช้ for...of, spread หรือ Array.from เพื่อดึงค่ามาใช้งาน

โพรโทคอลแบบวนซ้ำได้และ for...of — ภาพประกอบ 8

คำถามที่พบบ่อย

บทเรียน “โพรโทคอลแบบวนซ้ำได้และ for...of” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โพรโทคอลแบบวนซ้ำได้และ for...of” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โพรโทคอลแบบวนซ้ำได้และ for...of”

เรียนรู้โพรโทคอลแบบวนซ้ำได้: Symbol.iterator, iterator.next() และการใช้ for...of, spread กับ Array.from ผ่านตัวอย่างกำหนดเองขนาดเล็ก คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “โพรโทคอลแบบวนซ้ำได้และ for...of” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม

ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โพรโทคอลแบบวนซ้ำได้และ for...of
  2. ฟังก์ชันเจเนอเรเตอร์ yield และไปป์ไลน์ขนาดเล็ก
  3. ตัววนซ้ำแบบ async — for await...of และเจเนอเรเตอร์ async
← กลับไปที่ JavaScript Academy