สิ่งที่ซับซ้อนที่สุดอย่างหนึ่งที่คุณจะพบในขณะที่เรียนรู้จาวาสคริปต์คือการวนซ้ำ ตอนนี้ บางคนอาจบอกว่าการวนซ้ำเป็นเรื่องง่าย แต่ฉันมีปัญหามากมายในขณะที่เรียนรู้การวนซ้ำใน JavaScript และฉันรู้ว่าพวกคุณหลายคนอาจยังคงประสบปัญหาเหล่านั้นอยู่

ดังนั้นฉันจะสอนคุณเกี่ยวกับลูปใน JavaScript ด้วยความตั้งใจที่จะมอบสิ่งที่ดีที่สุดให้กับคุณ ฉันจะพยายามเขียนบทความนี้โดยมีข้อสันนิษฐานว่าคุณไม่รู้อะไรเกี่ยวกับลูป

สำหรับลูป

for loop เป็นหนึ่งในลูปพื้นฐานที่คุณจะพบ สิ่งที่คุณจะไม่รู้เป็นเวลานานก็คือ JavaScript มี for loops สามประเภท ฉันจะแสดงให้คุณเห็นทั้งหมดนั้น

const num = 5

for(let i = 0 ; i < num ; i++) {
    console.log(i)
}

// 0 1 2 3 4

นี่เป็นรูปแบบพื้นฐานสำหรับ for-loop ตอนนี้ให้ฉันให้วิธีที่ง่ายกว่านี้แก่คุณในการทำความเข้าใจสิ่งนี้:

for( initialization, condition, increment/decrement )

ฉันคิดว่าโค้ดด้านบนช่วยให้เข้าใจได้ง่ายขึ้น ก่อนอื่น เรามี 'let i = 0' ซึ่งเป็นส่วนเริ่มต้นของเรา หรือพูดง่ายๆ ก็คือจุดเริ่มต้นที่ลูป จากนั้นเราก็มี 'i ‹ num ' ซึ่งเป็นเงื่อนไขการยุติลูปของเรา ตราบใดที่เป็นไปตามเงื่อนไขนี้ ลูปก็จะดำเนินต่อไป จากนั้นเราก็จะได้ส่วนที่สามและสุดท้ายของลูปซึ่งก็คือการเพิ่มขึ้นหรือลดลง

คุณจะเห็นว่ามีการใช้ลูปเพื่อทำบางสิ่งซ้ำแล้วซ้ำอีกจนกว่าจะตรงตามเงื่อนไขที่กำหนด ตัวอย่างเช่น คุณอาจต้องการพิมพ์ตารางที่ 4 มาเขียนโค้ดสำหรับสิ่งนี้กัน

const num = 4

for( let i = 1; i <= 10; i++) {
    console.log(`${num} x ${i} = ${num * i}`)
}

/**

4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
4 x 10 = 40

**/

ในโค้ดชิ้นนี้ ฉันใช้ for loop แบบง่ายเพื่อพิมพ์ตารางที่ 4 สำหรับการเขียนตาราง คุณจะต้องทำงานเดิมทั้งหมด 10 ครั้งเท่านั้น สมมติว่าคุณเริ่มจาก 1 ไม่ใช่จาก 0 ดังนั้นเงื่อนไขการเริ่มต้นและการยกเลิกจึงเปลี่ยนไปจากโค้ดชิ้นก่อนหน้า

ตอนนี้วงนี้ก็ดีและทั้งหมด คุณสามารถใช้มันในอาร์เรย์และวัตถุและอะไรก็ตาม สมมติว่าคุณรู้ว่าฉันจะไปยังจุดถัดไปเพื่อวนซ้ำได้อย่างไร ซึ่งเป็นวง for-in

for-in วนซ้ำ

แม้ว่าการเขียนโปรแกรมคุณไม่จำเป็นต้องใช้การวนซ้ำจนถึงตัวเลข แต่ส่วนใหญ่แล้วคุณใช้มันเพื่อวนซ้ำอาร์เรย์หรือวัตถุทั้งหมด ใน JavaScript เรามีสิ่งที่เรียกว่า for-in วนซ้ำ เรามาดูกันว่ามันทำงานอย่างไร

const arr = [ 2, 3, 5, 7, 11, 13, 17, 19]

for(let index in arr) {
    console.log(index)
}

// 0 1 2 3 4 5 6 7 

ที่นี่เรามี for-in loop ที่ใช้กับอาร์เรย์ของจำนวนเฉพาะที่น้อยกว่า 20 คุณจะเห็นว่า for-in loop พิจารณาสิ่งที่คุณประกาศให้เป็นดัชนีในกรณีของอาร์เรย์ พวกคุณที่รู้จัก Python บ้างอาจจะเคยใช้ for-in loops ไปแล้ว ส่วนใหญ่จะใช้กับฟังก์ชันช่วง มาดูกันว่าเราจะได้อะไรในกรณีของ Objects บ้าง

let obj = {
    Name: 'Gaurav',
    Religion: 'Hindu',
    Nationality: 'Indian',
    Age: '24',
    proffession: 'Software engineer',
    Hobby: ['Blogging', 'Reading', 'Technology']
}

 for(let index in obj) {
    console.log(index)
}

/**

Name
Religion
Nationality
Age
proffession
Hobby

**/


/**
You can get values of an object by using obj[index] 
**/

ในกรณีของ Objects เราได้รับคีย์แทนดัชนี โดยทั่วไปกล่าวว่าหากคุณกำลังจัดการกับอ็อบเจ็กต์ ให้ใช้ for-in loop ในกรณีของอาร์เรย์ ให้ใช้ for-of loop ซึ่งเป็นลูปถัดไป

for-ของวง

เช่นเดียวกับ for-in loop เราก็มี for-of loop ใน JavaScript เช่นกัน แต่ต่างจาก for-in loop ตรงที่ไม่สามารถใช้ในกรณีของอ็อบเจ็กต์ได้ หากคุณพยายามใช้พวกมันกับวัตถุ พวกมันจะแจ้งข้อผิดพลาดว่า 'วัตถุไม่สามารถทำซ้ำได้' แต่มันทำงานได้ดีในกรณีของอาเรย์ มาดูกันว่ามันจะเป็นอย่างไร

const arr = [ 2, 3, 5, 7, 11, 13, 17, 19]

for(let element of arr) {
    console.log(element)
}

// 2 3 5 7 11 13 17 19

ดังที่คุณเห็นผลลัพธ์จากตัวอย่างก่อนหน้านี้เมื่อใช้แทนการเปลี่ยนแปลงทั้งหมด ในกรณีนี้ สิ่งที่เราได้รับจะเทียบเท่ากับ 'arr[index]' เราเรียกมันว่าองค์ประกอบของอาร์เรย์ หรือเราสามารถพูดได้ว่า:

ผลลัพธ์ของ for-of loop == array [ไม่ว่าผลลัพธ์ของ for-in loop จะเป็นอย่างไร]

แม้ว่านั่นจะซับซ้อนเล็กน้อย แต่ฉันหวังว่าจะทำให้คุณเข้าใจว่าทำไม for-in loop ถึงเป็นที่ต้องการในวัตถุ แม้ว่าหากคุณต้องการดัชนีของอาร์เรย์ ก็ควรใช้ for loop แบบง่ายจะดีกว่า หากคุณต้องการจัดการกับองค์ประกอบของอาร์เรย์ for-of อาจเป็นสิ่งที่คุณต้องทำ

หมายเหตุ: คุณสามารถประกาศ for-in และ for-of loops ด้วย const ได้ แต่คุณไม่สามารถประกาศ for-in และ for-of loops ได้ง่ายๆ

ในขณะที่วนซ้ำ

ในขณะที่ลูปเป็นสิ่งที่เรียกได้ว่าเป็นโปรแกรมเมอร์นรก แม้ว่าแนวคิดจะค่อนข้างเหมือนกับการวนซ้ำก็ตาม มันซับซ้อนนิดหน่อย เชื่อหรือไม่ว่าโปรแกรมเมอร์ทำผิดพลาดมากมายในขณะที่จัดการกับ while loop

//your initialization goes here
while ( you terminating condition goes here ) {
     // whatever you want to do goes here;
  
   //you increment or decrement goes here
}

ตอนนี้เรามาเขียนตาราง 18 ด้วย while loop กันดีกว่า

let i = 1, num = 18
while( i <= 10) {
   console.log(`${num} x ${i} = ${num * i}`)
    i++
}

/**
18 x 1 = 18
18 x 2 = 36
18 x 3 = 54
18 x 4 = 72
18 x 5 = 90
18 x 6 = 108
18 x 7 = 126
18 x 8 = 144
18 x 9 = 162
18 x 10 = 180
**/

ตอนนี้เรามาลองทำข้อผิดพลาดในขณะที่วนซ้ำแล้วดูว่าจะเกิดอะไรขึ้น มาย้ายส่วนที่เพิ่มขึ้นก่อนคอนโซลกัน

let i = 1, num = 18
while( i <= 10) {
    i++;
   console.log(`${num} x ${i} = ${num * i}`);
    
}

/**
18 x 2 = 36
18 x 3 = 54
18 x 4 = 72
18 x 5 = 90
18 x 6 = 108
18 x 7 = 126
18 x 8 = 144
18 x 9 = 162
18 x 10 = 180
18 x 11 = 198
**/

มีข้อผิดพลาดมากมายที่คุณสามารถทำได้ด้วย while loops และวิธีที่ดีที่สุดในการค้นหา ผลลัพธ์ที่ได้คือต้องลองด้วยตัวเอง หลายครั้งที่คุณจะได้รับข้อผิดพลาดที่แจ้งว่าสแต็กล้นหรือบางอย่างและลูปจะพิมพ์ต่อไปจนกว่าคุณจะปิดแท็บเบราว์เซอร์นั้นทั้งหมด

สิ่งนี้เกิดขึ้นเมื่อเงื่อนไขและการเพิ่มขึ้น/ลดลงของคุณไม่ได้ถูกนำมาใช้อย่างถูกต้อง

ลองพิจารณาสถานการณ์:

let num = 10;
while( num > 8 ) {
    console.log("Keep printing this to console")
    num++;
}

อย่างที่คุณเห็นตัวเลขจะมากกว่า 8 เสมอในเงื่อนไขนี้ และเราจะเพิ่มตัวเลขให้มากขึ้นเสมอ ดังนั้นโอกาสที่มันจะน้อยกว่า 8 จึงไม่มีอยู่จริง ดังนั้นลูปจะยังคงทำงานต่อไปตลอดไปเว้นแต่คุณจะปิดมันลง

วิธีที่ดีที่สุดในการหลีกเลี่ยงสถานการณ์ดังกล่าวคือ โปรดจำไว้ว่าหากตัวแปรที่คุณประกาศในเงื่อนไขนั้นจำเป็นต้องมากกว่าสิ่งใดสิ่งหนึ่ง คุณจะต้องลดค่าตัวแปรนั้นลงในบล็อกของลูป while ถ้ามันจำเป็นต้องเล็กกว่าของบางอย่าง คุณจะต้องเพิ่มมันเข้าไป

หมายเหตุ: ฉันพูดได้แค่ว่าใช้ while วนซ้ำด้วยความระมัดระวัง

ทำในขณะที่วนซ้ำ

ไม่ค่อยมีการใช้ do- While loop แต่ก็มีอยู่ ลองมาดูกันว่ามันแตกต่างจากการวนซ้ำแบบธรรมดาอย่างไร

let num = 5

do {
    num++
} while ( num <= 10)

console.log(num)

// 11

อย่างที่คุณเห็น Do- While Loop จะดำเนินการตามที่ร้องขอก่อน และหลังจากทำงานนั้น มันจะตรวจสอบว่าเป็นไปตามเงื่อนไขหรือไม่ ในการจัดการที่คุณต้องเขียนเงื่อนไขในลักษณะที่จะทำงานของคุณได้อย่างถูกต้อง พูดง่ายๆ ก็คือนักพัฒนาจะได้งานมากขึ้น

หมายเหตุ: ฉันไม่เคยใช้ do- While loop