Я посмотрел на это: Возврат значений из вложенных функций в Javascript
но мне это не очень помогло (или я просто слишком туп, чтобы понять это).
Моя переменная область как-то отключена, и я не понимаю, почему. Мой alert() ведет себя не так, как ожидалось. Пытался добавить комментарии ко всем строкам, чтобы объяснить, о чем я думаю.
Большое спасибо за любые комментарии/указания/ответы!
var g = {}; / is a large object with all kinds of other stuff and functions in it
g.ding = function(){ // my problem function
var baby = 'young'; // i thought I set a local var here
if(someVar==true) { // standard issue if statement
someAPI.class( // using an API that uses a function as its attribute
function(stuff){ // my anonymous function
baby = 'old'; // setting the var to something
}
);
}
return baby; // returning the var
}
alert( g.ding() ); // i expect it to say "old" but it keeps saying "young". why?
НОВАЯ РЕДАКЦИЯ: Принятый ответ Хуана великолепен, но нет ли способа использовать setTimeout() для работы с асинхронными вызовами функций и, по сути, сделать их синхронными? если любой, кто читает это, знает ответ, я хотел бы знать. Спасибо.
function(stuff)
никогда не запускается. Ваш обзор выглядит нормально. Ничто здесь не доказывает, что строка кода, устанавливающаяbaby="old"
, когда-либо выполнялась.someVar
может быть ложным, илиsomeAPI
никогда не сможет вызвать функцию, которую вы ему передадите. - person Jamie Treworgy   schedule 22.06.2012