Этот вопрос закрыт для ответов, так как повторяет вопрос Почему не стоит использовать for ... in в массивах?

Почему не стоит использовать for...in, for...of, for(airbnb linter)?

Нашёл лишь это: https://github.com/airbnb/javascript#iterators--nope
И тем не менее, более хотелось бы получить более развёрнутый ответ.
  • Вопрос задан
  • 1231 просмотр
Пригласить эксперта
Ответы на вопрос 3
profesor08
@profesor08 Куратор тега JavaScript
Потому что кто-то так решил и его голос имеет сильный вес. Ты всегда может отключить данное правило.

Связано это с тем, что в некоторых браузерах все плохо с итераторами, а for..in итеррирует в добавок и свойства прототипа, что как-бы четко поясняется в документации, а полагаться на hasOwnProperty нельзя в некоторых случаях (не поясняется почему), наверно потому, что его могут переопределить для объекта, но его могут переопределить и для Object, и тогда все плохо. Либо недостаточная поддержка браузерами.

Резюмируя, нефиг итеррировать по свойствам объекта, для итеррации есть массивы. А свойства на то и свойства, чтоб к ним обращаться напрямую.
Ответ написан
Xuxicheta
@Xuxicheta
инженер
Использую for..of по массиву только в том случае, когда нужно прервать цикл досрочно через break. Во всех остальных случаях - методы массива. Просто быстрее читается.

Хотя должен заметить, что в случае асинхронных действий, реализация через reduce воспринимается тяжелее, чем await в for цикле, и тут я считаю допустимым нарушить требования линтера.
Ответ написан
xPomaHx
@xPomaHx
1vs9
Потому что колбэк метода из прототипа массива проще тестировать. Лично для меня это не убедительный аргумент, чтобы отказаться от процедурных переборов полностью.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы