Автор, а разве массив, заданный с помощью var внутри функции, должен жить после ее отработки? Это же локальная объектная переменная.

Код AS1/AS2:
function xfunc(){
var lines = new Array();
if(true){
lines.push('1');
}
lines.push('2');
for (i in lines) {
trace(i + ' ' + lines[i]);
//выводит
//1 2
//0 1
}
}
xfunc();
for (i in lines) {
trace(i + ' ' + lines[i]); //ничего не выводит
}
Вы где проверяли состав массива? Вне функции его нет.
Создавайте массив заранее.
Вот так все прекрасно работает, и массив остается после того, как функция отработала:

Код AS1/AS2:
var lines = new Array(); // Создали новый массив
function xfunc(){
lines.push('_sec');
if(true){
lines.push('_dsec');
}
}
xfunc();
for (i in lines) {
trace(i + ' ' + lines[i]);
//выводит
//1 _dsec
//0 _sec
}