Разница между циклами for ... of и for ... in в JavaScript. И ответ на вопрос, что и когда лучше использовать.
Оператор
for...of
выполняет цикл обхода итерируемых объектов (включаяArray
,Map
,Set
, объект аргументов и подобных), вызывая на каждом шаге итерации операторы для каждого значения из различных свойств объекта
for ... of цикл работает только с повторяемыми объектами. В JavaScript итерируемые объекты - это объекты, которые можно перебирать.
String, Array, TypedArray, Map и Set - все это встроенные итерируемые объекты, поскольку каждый из их объектов-прототипов реализует метод @@iterator. Итак, цикл for ... of
работает с указанными типами объектов.
Например:
cosnt str = "Hello World";
for(element of str) {
console.log(element);
}
// H e l l o " " W o r l d
Цикл for...in
проходит через перечисляемые свойства объекта. Он пройдёт по каждому отдельному элементу.
for ... in
работает с теми свойствами, у которых enumerable flag установлен в true
:
Например:
const student = {
name: "Ivan",
age: 35,
}
for(key in student) {
console.log(key, student[key]);
}
// result:
// name: "ivan", age: 33
В заключение, что же использовать:
От себя добавлю, что for...of поставляется с ES2015 и в настоящее время является лучшей практикой (по моему опыту) потому что:
.entries()
и деструктурирование.Если есть, что добавить - пишите в комментариях!
Если вам нравятся материалы на сайте, вы можете помочь. Средства пойдут на оплату сервера, на котором функционирует сайт, а также на продвижение ресурса и корм коту!