JavaScript: область видимости для массива
видимость элементов массива в JavaScript
Обратимся к проблеме видимости элементов массива при использовании выражения for
в случае когда одноименный массив объявлен как внутри, так и за пределами цикла.
Обратимся к коду:
let animals = ['horse', 'cow', 'dog', 'cat', 'pig'];
for (let i = 0; i < animals.length; i++) {
let animals = ['fox', 'squirrel'];
console.log(animals[i]);
}
Итак, у нес есть:
- массив
animals
объявленный до цикла, - цикл, который повторится 5 раз, в соответствии с длиной массива
animals
, - одноименный массив
animals
, объявленный уже внутри цикла.
Каждая итерация выводит один элемент массива.
Какой результат мы увидим в консоли?
В соответствии с особенностями языка JavaScript в консоль будут выведены элементы массива animals
переопеределенного внутри цикла и содержащего 2 элемента: fox
и squirrel
.
Однако, цикл будет повторяться 5 раз, в соответствии с длиной первоначально объявленного массива animals
.
Недостающие 3 элемента не вызовут ошибку в отличие от других языков программирования, например: Java или C++. Для несуществующих элементов в консоли мы увидим undefined
.
Таким образом ответ будет иметь вид:
- fox
- squirrel
- undefined
- undefined
- undefined
Спасибо за внимание.