โพรโทคอลแบบวนซ้ำได้และ 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 กับสิ่งที่มีมาให้ในภาษา
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);
}

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 จะเรียก 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 }

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);

แนวปฏิบัติที่ดี
เคล็ดลับ:
- คืนค่า iterator ใหม่ทุกครั้งใน [Symbol.iterator]
- จบด้วย done: true เสมอเพื่อหลีกเลี่ยงลูปไม่รู้จบ
- เก็บสถานะไว้ภายในคลอสเชอร์ของ iterator

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

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

คำถามที่พบบ่อย
บทเรียน “โพรโทคอลแบบวนซ้ำได้และ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โพรโทคอลแบบวนซ้ำได้และ for...of
- ฟังก์ชันเจเนอเรเตอร์ yield และไปป์ไลน์ขนาดเล็ก
- ตัววนซ้ำแบบ async — for await...of และเจเนอเรเตอร์ async