Junior
for...in жана for...of циклдеринин айырмасы эмнеде?
sobes.tech AI
AIден жооп
for...in циклү объекттин саналуучу мүнөздөмөлөрүнүн (ачкычтарынын) жана анын прототип чынжырынын мүнөздөмөлөрүнүн ачкычтары боюнча өтөт.
for...of циклү, кайталана турган объекттердин (Array, Map, Set, String, arguments ж.б.) баалуулуктары боюнча өтөт. Ал прототип мүнөздөмөлөрү боюнча өтпөйт.
for...in |
for...of |
|
|---|---|---|
| Өтөт | Объекттин ачкычтары (мүнөздөмөлөрү) | Кайталана турган объекттердин баалуулуктары |
| Колдонулат | Объекттер | Array, String, Map, Set жана башка кайталана турган объекттер менен |
| Прототип | Прототиптеги мүнөздөмөлөргө өтөт | Прототиптеги мүнөздөмөлөргө өтпөйт |
| Тартиби | Кепилденбейт, өзгөчө сан эмес ачкычтар үчүн | Масивдер үчүн кепилденген (индекс боюнча) |
for...in мисалы:
const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]); // Чыгуу: "a 1", "b 2"
}
for...of мисалы:
const arr = [1, 2, 3];
for (const value of arr) {
console.log(value); // Чыгуу: 1, 2, 3
}
Жалпысынан, массивдер жана окшош структуралар боюнча өтүү үчүн for...of колдонуу артыкчылыкка ээ, ал эми объекттин мүнөздөмөлөрүн өтүү үчүн — for...in (көп учурда hasOwnProperty менен бирге, прототип мүнөздөмөлөрүн чыгарып салуу үчүн).