Встречается на собеседованиях • сегодня

Почему нельзя переписать цикл for...in на while

Цикл for...in предназначен для перебора перечисляемых свойств объекта, включая унаследованные. Его нельзя напрямую заменить на while, так как for...in автоматически обрабатывает цепочку прототипов и перечисляет ключи, а в while это нужно делать вручную.

Пример с for...in:

javascript
const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key); // 'a', 'b'
}

Аналог на while будет сложнее и менее читаемым:

javascript
const obj = { a: 1, b: 2 };
const keys = Object.keys(obj);
let i = 0;
while (i < keys.length) {
  const key = keys[i];
  console.log(key); // 'a', 'b'
  i++;
}

Основные проблемы замены:

  1. Нужно вручную получать ключи через Object.keys()
  2. Теряется автоматический перебор по прототипам
  3. Код становится менее читаемым и более многословным
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы