Я могу понять разочарование, вы используете одно и то же ключевое слово, так почему же оно не ведет себя одинаково? Но я думаю, что вы должны подумать об этом следующим образом:
for - это способ определения al oop, пока какое-либо условие выполняется, с другим способом определения этого условия.
В обычном для l oop вы l oop, пока средняя часть (условие) выполняется:
for(let i = 0; i < 10; i++)
Это похоже на то, как некоторое время l oop может работать, но это сокращение syntacti c:
let i = 0;
while (i < 10) {
i++;
}
Так что for..in - это для l oop, у которого есть условие другого типа для каждого свойства в этом объекте, поэтому пока у вас есть больше свойств, он будет продолжать цикл. Вы также можете написать это так:
const keys = Object.keys(example);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const value = example[key];
}
У вас также есть for ... of, который перебирает элементы в массиве, но это syntacti c sugar для:
for(let i = 0; i < array.length; i++) { const item = array[i]; }
Также рассмотрим, как делать ... в то время как l oop похоже на некоторое время l oop, но с некоторыми немного другими правилами и поведением. Вместо того, чтобы расстраиваться из-за синтаксиса, попытайтесь понять, как он экономит ваше время, сделав ваш код немного менее многословным, но для этого он должен быть немного разным в каждом конкретном случае. Альтернативой было бы иметь очень много языковых ключевых слов.