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 αντικειμένων
Χρησιμοποιείται με Αντικείμενα Arrays, strings, Map, Set και άλλα iterable αντικείμενα
Πρωτότυπο Διατρέχει τις ιδιότητες του πρωτοτύπου Δεν διατρέχει τις ιδιότητες του πρωτοτύπου
Σειρά διαπερασμού Δεν εγγυάται για μη-ακέραια κλειδιά Εγγυάται για arrays (ανά δείκτη)

Παράδειγμα 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
}

Γενικά, για την επανάληψη σε arrays και παρόμοιες δομές, προτιμάται η χρήση του for...of, και για την επανάληψη ιδιοτήτων αντικειμένων — το for...in (συχνά σε συνδυασμό με hasOwnProperty για την απομάκρυνση ιδιοτήτων του πρωτοτύπου).