Область видимости в javascript. Как изменить глобальную переменную внутри функции?
Здравствуйте, меня интересует решение такой задачи.
//==================
//глобальная х
var x = [];
//функция, где мы изменяем х
function test(){
x.push('some test text');
};
test();
console.log(x); // будет x=[]
//==================
Так вот, подскажите пожалуйста, как можно в теле функции менять саму глобальную переменную?!
В javascript я совсем новичок, и с областями видимости я дела еще не имел.
Знаю что на С++ я бы просто передал ссылку на переменную прямо в функцию, и там бы уже с ней делал все что мне нужно, но вот в JS даже и не знаю что мне делать.
@Anonym хм, глупый наверное будет вопрос, и мне лучше будет загуглить, но все-же, почему код выполняется еще до получения данных getJson? и как это предотвратить?!
Так устроен JS. Некоторые вещи работают асинхронно.
Смысл в том, что $.getJSON(url, callback) выполняется до console.log(), но вот callback, выполнится только при получении результата. Если хотите выполнять какой-то код после получения данных - выполняйте его в callback функции. Подробнее можете почитать на jqapi.com об $.ajax и методах .done(), .fail(), .always()
Anonym
В вашем коде переменная table_massive меняется успешно.
Пустой массив в выводе, т.к. console.log отрабатывает до того, как getJson получит данные.