ฉันรู้ว่า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