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