kdyz napíšete var hocikde i na trebars na konci funkcie, tak sa vždy interpetuje jak kdyby byl deklarovany na začiatku funkcie, je viazany na scope funkcie. Môžete použiť let ktory je viazaný na scope bloku, teda i samotneho cyklu. Ak volate funkciu vo vnutry cyklu, a vo volanej funkcii chcete použiť premennú iteracie, musite ho predať ako parameter. Logickejsie je ale to prepsat tak, aby ste mali iterator v bloku kde ho pouzivate, ako napríklad vo Vašom prípade pre výber prvku z arrayu. Ja bych tu funkci oddelil inak, tak jak to napsal Wikan.
Odporúčam Vám si nájsť neco o uzaveroch, closures. Ak to pochopíte, už takéto chyby budete vedieť vyriešiť.