Sobes.tech
Junior

фар...ин ва 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 барои хориҷ кардани хосиятҳои прототип).