Задать вопрос

Какой смысл от for of когда есть for in?

Какой смысл от новой конструкции for of, когда for in так же перебирает объект?
  • Вопрос задан
  • 6687 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 3
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Прежде чем задавать подобные вопросы, было бы неплохо ознакомиться с предметом
frontender.info/es6-in-depth-iterators-and-the-for...
Глядишь, и вопрос бы отпал сам собой...
Ответ написан
Комментировать
evgeniy8705
@evgeniy8705
Повелитель вселенной
// Новый синтаксис добавлен для перебора итерируемых коллекций. Можете написать свою коллекцию с реализацией итератора и использовать for..of для ее перебора.

let arr = [`a`, `b`, `c`, `d`, `e`];

for (elem in arr) {
	console.log(elem); // 0 1 2 3 4
}

for (elem of arr) {
	console.log(elem); // a b c d e
}

for (let iter = arr[Symbol.iterator]; iter.done;) {
	console.log(iter.next()); // a b c d e
}
Ответ написан
Комментировать
@Alecxandrys
for..in перебирает все свойства объекта, которые тот имеет. Унаследованные от прототипа или присвоенные уже данному экземпляру-неважно. Соответственно на каждый элемент необходимо вызывать проверку hasOwnProperty, чтоб отсеять свойства прототипа и проверку содержимого, ибо к примеру для массива свойство length тоже попадет в цикл, и не отсеется предыдущей проверкой.

for..of является неявным итератом, который перебирает именно присвоенные свойства объекта, не захватывая наследованные и другие поля, что делает значительно более удобным
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы