PDA

Просмотр полной версии : не работает push Array в условии.


.true
24.10.2009, 15:21
Не могу понять в чем дело. Вот пример функции:

function xfunc(){
var lines = new Array('_sec'); // Создали новый массив
if(чтото){lines.push('_dsec');} // НЕ работает!!!!
lines.push('_dsec'); // Работает.
}


Почему так может быть? oO

P.S. Он даже trace на массив lines не выводит. ппц
P.S.S. Пробовал даже добавлять так: lines[1] = '_dsec'; Тоже не пашет

udaaff
24.10.2009, 15:39
xfunc(); // _sec,_dsec,_dsec
function xfunc(){
var lines = new Array('_sec'); // Создали новый массив
if(true){lines.push('_dsec');} // НЕ работает!!!!
lines.push('_dsec'); // Работает.
trace(lines);
}

Сникерс
24.10.2009, 15:53
А может условие не выполняется?

mooncar
24.10.2009, 17:43
Автор, а разве массив, заданный с помощью var внутри функции, должен жить после ее отработки? Это же локальная объектная переменная.
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]); //ничего не выводит
}

Вы где проверяли состав массива? Вне функции его нет.
Создавайте массив заранее.

Вот так все прекрасно работает, и массив остается после того, как функция отработала:
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
}

.true
24.10.2009, 20:35
Всем спасибо! Трезвый взгляд показал что условие не выполнялось) Надо больше спать и быть внимательнее))