В этом случае вы не можете по двум причинам.
Первое, что можно обойти, заключается в том, что scope переменной является анонимной функцией, которая формирует второй аргумент для метода getJSON
.
Вторым, с которым труднее справиться, является то, что асинхронный JavaScript и XML асинхронный . Метод getJSON
запускает загрузку, но затем скрипт продолжает работать. Строка console.log
достигается до того, как baz
будет присвоено значение.
Любая сложная программа, написанная на JavaScript, будет управляемой событиями. Когда вы запускаете что-то в движение (например, Ajax-вызов), вы должны обработать результаты этого с помощью метода обратного вызова.
Делайте все, что нужно, в анонимной функции, которую вы передаете getJSON
(или в другой функции, вызываемой оттуда).