ฉันรู้ว่าfor... inลูปคืออะไร(มันวนซ้ำที่สำคัญ) แต่ได้ยินครั้งแรกเกี่ยวกับfor... of(มันวนซ้ำเกินมูลค่า)
ฉันสับสนกับfor... ofลูป ฉันไม่ได้รับคำคุณศัพท์ นี่คือรหัสด้านล่าง:
var arr = [3, 5, 7];
arr.foo = "hello";
for (var i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (var i of arr) {
console.log(i); // logs "3", "5", "7"
// it is does not log "3", "5", "7", "hello"
}
สิ่งที่ฉันได้รับคือทำfor... ofซ้ำมากกว่าค่าของคุณสมบัติ ถ้าอย่างนั้นทำไมมันไม่เข้าสู่ระบบ (กลับ) "3", "5", "7", "hello"แทน"3", "5", "7"? แต่for... inวนซ้ำทุกคีย์ ( "0", "1", "2", "foo") ที่นี่for... inวนซ้ำยังวนซ้ำที่fooสำคัญ แต่for... ofไม่ได้ย้ำกว่ามูลค่าของเช่นคุณสมบัติfoo "hello"ทำไมถึงเป็นเช่นนั้น
เรื่องสั้นในระยะสั้น:
ที่นี่ฉันfor... ofวนลูปคอนโซล มันควรเข้าสู่ระบบแต่ที่นี่มันล็อก"3", "5", "7","hello" "3", "5", "7"ทำไม
for ... ofถูกนำเข้าสู่ภาษาเพื่อแก้ไขปัญหาการใช้งานfor ... inกับอาร์เรย์ Array.prototypeอาจมีการแก้ไขในลักษณะที่มีคุณสมบัติเพิ่มเติมทำให้ไม่ปลอดภัยในการวนซ้ำเนื่องจากคุณอาจได้รับคีย์ตัวเลขที่คุณไม่ได้คาดหวัง
of(สำหรับ ... จากลูป)เนื่องจากมันถามเกี่ยวกับพฤติกรรมที่เฉพาะเจาะจงของคุณลักษณะแทนที่จะถามถึงภาพรวมทั่วไป
for <key> in" และ " for <value> of" และตระหนักถึง IE ไม่ได้รับการสนับสนุนfor..of
