Да, есть разница между циклом for и циклом for / in в JavaScript.Вот что отличается
Рассмотрим этот массив
var myArr = ["a", "b", "c"];
Позже я добавлю элемент в этот массив, но по-другому, например так:
myArr[myArr.length + 1] = "d";
На данный момент, это то, как выглядит массив, если вы console.log его
["c", "b", "a", undefined × 1, "d"]
Теперь давайте пройдемся по циклу, используя цикл for и for / in, и посмотрим, в чем разницаis: first, давайте попробуем цикл for
for(var i = 0; i != myArr.length; i++) { // note, i used " != " instead of " < ". Yes this is faster.
console.log(myArr[i]);
}
// output will look like this:
// "a"
// "b"
// "c"
// undefined × 1
// "d"
// - This still shows the undefined value in the array.
Теперь давайте посмотрим на цикл for / in
for(key in myArr) {
console.log(myArr[key]);
}
// array will look like:
// "a"
// "b"
// "c"
// "d"
// This will skip the undefined value.
Разница 1 : интерпретатор javascript будетпропустить все значения, которые являются нулевыми или неопределенными при использовании цикла for / in.Кроме того, цикл for / in преобразует все значения, если он встречает примитивное значение, в эквивалентный объект-оболочку.Где, поскольку цикл for этого не делает.
Разница 2 : При использовании цикла for мы объявили переменную i внутри цикла, эта переменная будет ограничена в функции,если цикл написан внутри этой функции.Это означает, что до завершения функции переменная i все еще доступна, даже вне цикла for, но внутри этой функции.Если, как в случае цикла for / in, область действия переменной «key» прекращается сразу после того, как цикл for / in перестает выполняться, что означает меньшее использование памяти.