Intro
ตั้งแต่เวลาในวิทยาลัยฉันได้ตั้งโปรแกรมใน Java, JavaScript, Pascal, ABAP , PHP, Progress 4GL, C / C ++ และอาจเป็นภาษาอื่น ๆ ที่ฉันนึกไม่ออกตอนนี้
ในขณะที่ทุกคนมีภาษาศาสตร์ของตัวเอง แต่ภาษาเหล่านี้แต่ละภาษาก็มีแนวคิดพื้นฐานที่เหมือนกันหลายประการ แนวคิดดังกล่าวรวมถึงโพรซีเดอร์ / ฟังก์ชั่น - สถานะIF, - FORลูปและ - WHILEลูป
แบบดั้งเดิม - forลูป
forวงแบบดั้งเดิมมีสามองค์ประกอบ:
- การเริ่มต้น:ดำเนินการก่อนที่บล็อกการค้นหาจะดำเนินการในครั้งแรก
 
- เงื่อนไข:ตรวจสอบเงื่อนไขทุกครั้งก่อนที่จะดำเนินการบล็อกลูปและออกจากลูปหากเป็นเท็จ
 
- ดำเนินการภายหลัง:ดำเนินการทุกครั้งหลังจากดำเนินการบล็อกลูป
 
ส่วนประกอบทั้งสามนี้แยกจากกันด้วย;สัญลักษณ์ เนื้อหาสำหรับแต่ละองค์ประกอบทั้งสามนี้เป็นตัวเลือกซึ่งหมายความว่าต่อไปนี้เป็นforลูปที่น้อยที่สุดที่เป็นไปได้:
for (;;) {
    // Do stuff
}
แน่นอนว่าคุณจะต้องรวมif(condition === true) { break; }  สิ่งif(condition === true) { return; }ใดสิ่งหนึ่งไว้ข้างในนั้นforเพื่อให้มันหยุดทำงาน
โดยทั่วไปแม้ว่าการกำหนดค่าเริ่มต้นจะใช้ในการประกาศดัชนีเงื่อนไขที่ใช้ในการเปรียบเทียบดัชนีนั้นกับค่าต่ำสุดหรือค่าสูงสุดและใช้ภายหลังเพื่อเพิ่มดัชนี:
for (var i = 0, length = 10; i < length; i++) {
    console.log(i);
}
การใช้การforวนซ้ำแบบดั้งเดิมเพื่อวนซ้ำผ่านอาร์เรย์
วิธีดั้งเดิมในการวนซ้ำผ่านอาร์เรย์คือ:
for (var i = 0, length = myArray.length; i < length; i++) {
    console.log(myArray[i]);
}
หรือถ้าคุณต้องการวนซ้ำไปข้างหลังคุณทำสิ่งนี้:
for (var i = myArray.length - 1; i > -1; i--) {
    console.log(myArray[i]);
}
อย่างไรก็ตามมีความเป็นไปได้หลายรูปแบบเช่นในตัวอย่างนี้:
for (var key = 0, value = myArray[key], length = myArray.length; key < length; value = myArray[++key]) {
    console.log(value);
}
... หรืออันนี้ ...
var i = 0, length = myArray.length;
for (; i < length;) {
    console.log(myArray[i]);
    i++;
}
... หรืออันนี้:
var key = 0, value;
for (; value = myArray[key++];){
    console.log(value);
}
สิ่งที่ได้ผลดีที่สุดส่วนใหญ่เป็นเรื่องของรสนิยมส่วนตัวและกรณีการใช้งานเฉพาะที่คุณกำลังนำไปใช้
โปรดทราบว่าแต่ละรูปแบบเหล่านี้ได้รับการสนับสนุนโดยเบราว์เซอร์ทั้งหมดรวมถึงรูปแบบที่เก่ามาก!
whileห่วง
ทางเลือกหนึ่งในการforวนซ้ำคือการwhileวนซ้ำ ในการวนซ้ำอาร์เรย์คุณสามารถทำได้:
var key = 0;
while(value = myArray[key++]){
    console.log(value);
}
เช่นเดียวกับforลูปแบบดั้งเดิมลูwhileปได้รับการสนับสนุนแม้กระทั่งเบราว์เซอร์ที่เก่าแก่ที่สุด
นอกจากนี้โปรดทราบว่าขณะที่วนซ้ำสามารถเขียนใหม่เป็นforวนซ้ำได้ ตัวอย่างเช่นการwhileวนซ้ำที่นี่จะทำงานในลักษณะเดียวกันกับfor-loop นี้:
for(var key = 0; value = myArray[key++];){
    console.log(value);
}
For...in และ for...of
ใน JavaScript คุณสามารถทำสิ่งนี้ได้:
for (i in myArray) {
    console.log(myArray[i]);
}
สิ่งนี้ควรใช้ด้วยความระมัดระวังเนื่องจากมันไม่ได้ทำงานเหมือนกับforวนลูปแบบดั้งเดิมในทุกกรณีและมีผลข้างเคียงที่อาจเกิดขึ้นที่ต้องพิจารณา ดูเหตุใดการใช้ "for ... in" กับการทำซ้ำอาร์เรย์จึงเป็นความคิดที่ไม่ดี สำหรับรายละเอียดเพิ่มเติม
เป็นทางเลือกกับผู้มีตอนนี้ยังfor...in for...ofตัวอย่างต่อไปนี้แสดงความแตกต่างระหว่างfor...ofลูปและfor...inลูป:
var myArray = [3, 5, 7];
myArray.foo = "hello";
for (var i in myArray) {
  console.log(i); // logs 0, 1, 2, "foo"
}
for (var i of myArray) {
  console.log(i); // logs 3, 5, 7
}
นอกจากนี้คุณต้องพิจารณาว่าไม่มีรุ่นของ Internet Explorer ที่รองรับfor...of( Edge 12+ทำ) และfor...inต้องใช้อย่างน้อย Internet Explorer 10
Array.prototype.forEach()
ทางเลือกอื่นสำหรับfor-loops คือArray.prototype.forEach()ซึ่งใช้ไวยากรณ์ต่อไปนี้:
myArray.forEach(function(value, key, myArray) {
    console.log(value);
});
Array.prototype.forEach() ได้รับการสนับสนุนโดยเบราว์เซอร์ที่ทันสมัยทั้งหมดเช่นเดียวกับ Internet Explorer 9 และใหม่กว่า
ห้องสมุด
ท้ายที่สุดห้องสมุดสาธารณูปโภคหลายแห่งก็มีforeachรูปแบบของตนเองเช่นกัน AFAIK ทั้งสามที่เป็นที่นิยมที่สุดคือ:
jQuery.each()ในjQuery :
$.each(myArray, function(key, value) {
    console.log(value);
});
_.each()ในในUnderscore.js :
_.each(myArray, function(value, key, myArray) {
    console.log(value);
});
_.forEach(), ในLodash.js :
_.forEach(myArray, function(value, key) {
    console.log(value);
});