ความแตกต่างระหว่าง for...in และ for...of loops
ลูปทั้งสองวนซ้ำบางสิ่ง ความแตกต่างหลักระหว่างพวกเขาคือสิ่งที่พวกเขาทำซ้ำ
1) สำหรับ...วนซ้ำ
วนซ้ำนี้วนซ้ำ คุณสมบัติที่นับได้ ของวัตถุในลำดับใดก็ได้ เน้นเฉพาะคุณสมบัติแต่ไม่เน้นค่า
ในตัวอย่างต่อไปนี้โดยใช้ for...in วน คุณสมบัติ ของอาร์เรย์จะถูกทำซ้ำ เนื่องจากเป็นอาร์เรย์ ดัชนี เป็นคุณสมบัติที่สำคัญ ดังนั้นดัชนีของแต่ละองค์ประกอบจะถูกวนซ้ำและแสดงในผลลัพธ์ นอกเหนือจากการจัดทำดัชนีคุณสมบัติที่สืบทอดมาบางอย่าง เช่น "inherProp2 "," inherProp1 " จะปรากฏขึ้นด้วย
ตัวอย่าง-1
<html> <body> <script> Object.prototype.inherProp1 = function() {}; Array.prototype.inherProp2= function() {}; var org = ["Apple", "Microsoft", "Tesla"] org.anotherOrg = "solarCity"; for (var key in org) { document.write(key); document.write("</br>"); } </script> </body> </html>
ผลลัพธ์
0 1 2 anotherOrg // own property inherProp2 // inherited property inherProp1 // inherited property
ในตัวอย่างต่อไปนี้ เนื่องจาก hasOwnProperty() ใช้เฉพาะคุณสมบัติของตัวเองเช่น ดัชนี และคุณสมบัติอื่น ๆ จะแสดงเป็นคุณสมบัติที่สืบทอดเช่น "inherProp1 " และ "inherProp2 " ไม่แสดง
ตัวอย่าง-2
<html> <body> <script> Object.prototype.objCustom = function() {}; Array.prototype.arrCustom = function() {}; var org = ["Apple", "Microsoft", "Tesla"] org.anotherOrg = "solarCity"; for (var i in org) { if (org.hasOwnProperty(i)) { document.write(i); document.write("</br>"); } } </script> </body> </html>
ผลลัพธ์
0 1 2 anotherOrg
2) สำหรับ...ของลูป
ไม่เหมือนกับสำหรับ...ใน วนซ้ำ สำหรับ...ของ วนซ้ำค่าที่วัตถุกำหนดจะวนซ้ำ
ในตัวอย่างต่อไปนี้ คุณสมบัติเช่น 'Apple ', 'ไมโครซอฟท์ ' และ 'เทสลา ' จะแสดงในผลลัพธ์โดยใช้ for...of วนซ้ำ
ตัวอย่าง
<html> <body> <script> var org = ["Apple", "Microsoft", "Tesla"] for (var key of org) { document.write(key); document.write("</br>"); } </script> </body> </html>
ผลลัพธ์
Apple Microsoft Tesla