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