Таковы причины, я могу думать о том, почему ваш второй console.log (фильтры) будет пустым:
INSTAJAM.media.popular
, скорее всего, асинхронная функция (он вызывает его обратный вызов через некоторое время, вероятно, в результате вызова ajax), а когда вы делаете второй console.log(filters);
, вызов ajax еще не завершен, поэтому ваш обратный вызов, который заполняет глобальную переменную filters
, еще не был вызван или запустить.
var filters = [];
на самом деле не является глобальным.
- В пределах видимости есть другая переменная с именем
filters
, поэтому вы фактически не изменяете глобальную.
Основываясь на структуре INSTAJAM.media.popular
, которая принимает обратный вызов, моя догадка №1. Асинхронный javascript означает, что в серийном исполнении ничего не происходит. Вместо этого вы вызываете что-то вроде INSTAJAM.media.popular(fn)
, а через некоторое время обратный вызов вызывается, когда вызов ajax завершается. Это означает, что код, расположенный сразу после вызова INSTAJAM.media.popular(fn)
, не может использовать результаты этого вызова. Вместо этого любой код, который хочет использовать эти результаты, должен быть в самом обратном вызове или вызван из обратного вызова.
Ваш метод, скорее всего, асинхронный. – 0x499602D2
, который звонит 'INSTAJAM.media.popular' –