Sobes.tech
Junior

Ի՞նչ է տարբերությունը for...in և for...of ցիկլերի միջև:

sobes.tech AI

Պատասխան AI-ից

for...in ցիկլը անցնում է օբյեկտի enumerable հատկությունների (հատկությունների) բանալիներով, ներառյալ նրա պրոտոտիպ շղթայի հատկությունները:

for...of ցիկլը անցնում է iterable օբյեկտների (Array, Map, Set, String, arguments և այլն) արժեքներով: Դա չի անցնում պրոտոտիպի հատկություններով:

for...in for...of
Անցնում է Օբյեկտի բանալիներ (հատկություններ) Iterable օբյեկտների արժեքներ
Օգտագործվում է Օբյեկտների հետ Array, String, Map, Set և այլ iterable օբյեկտների հետ
Պրոտոտիպ Անցնում է պրոտոտիպի հատկություններով Չանցնում պրոտոտիպի հատկություններով
Տեսակավորություն Չի երաշխավորվում ոչ ամբողջ թվային բանալիների համար Գերաշխավորված է զանգվածների համար (ինդեքսով)

Օրինակ 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-ի հետ միասին՝ պրոտոտիպի հատկությունները բացառելու համար):